示例代码:
#include <stdio.h>
int num = 0; //声明一个全局变量
int test_01() //声明&定义函数,如果成功执行,全局变量num会+1
{
return num++;
}
int main()
{
test_01; //调用函数不带小括号
printf("调用函数不带小括号的结果:%d \n", num);
test_01(); //正常调用函数
printf("正常调用函数的结果:%d \n", num);
return 0;
}
解释:
函数名可以看作是一种指针常量。
单个的常量、变量也是表达式。
所以 test_01; 是一个合法的表达式。
这个表达式什么都不作,仅返回 test_01地址,而不是调用 test_01函数,函数并没有执行。
参考链接:https://bbs.youkuaiyun.com/topics/220046787 其中5楼 @rushman 的回复。
当在C语言中调用函数时,如果忘记在函数名后面加上小括号,实际上不会执行函数。函数名在这种情况下被视为指针常量表达式,返回函数的地址,而不会执行函数体。这种表达式是合法的,但不会产生预期的函数调用效果。
1989

被折叠的 条评论
为什么被折叠?



