我做了一个测试:
test1.c
#include <stdio.h>
int main () {
getchar();
}
test2.c中
#include <stdio.h>
int main () {
int c;
c = getchar();
}
test1.c和test2.c都会产生相同的结果,等待用户输入内容。
我的问题:
在test2.c中,我只将getchar()函数赋值给变量'c',我从不调用/调用该函数,为什么要调用它?我说它被调用的原因是因为当我运行它时,它产生与test1.c相同的结果
我认为只有在调用/调用函数时才会调用函数,就像在test1.c中一样,我调用了getchar()的函数。但是在test2.c中,我从不调用该函数,我只将getchar()函数赋给变量'c'
答案 0 :(得分:3)
在test2.c中,我只将
getchar()
的函数分配给变量c
,我从不调用/调用该函数,为什么要调用它?
C在函数名称(带有括号的getchar
)和函数调用表达式(带括号的getchar()
)之间产生差异。您的代码不会为变量分配函数;它将函数调用产生的结果赋给变量c
。
我认为只有在调用/调用函数时才会调用函数,就像在
中一样test1.c
test1.c与test2.c中两次调用的区别在于test1.c使用语句调用该函数,而test2.c使用表达。但是,这两个程序都会调用一个函数。
答案 1 :(得分:1)
C中名称getchar
后面的左右括号表示调用与名称getchar
关联的函数。因此,在两个代码片段中,您实际上都在调用该函数。
如果你想&#34;分配&#34;变量c
的函数,它看起来像这样:
int (*c)() = &getchar;
您上面真正做的是获取getchar
的地址并将其分配给函数指针c
。