分配给C中变量的函数

时间:2017-03-18 00:49:16

标签: c

我做了一个测试:

test1.c

#include <stdio.h>
int main () {
   getchar();
}

test2.c中

#include <stdio.h>
int main () {
   int c;
   c = getchar();
}

test1.c和test2.c都会产生相同的结果,等待用户输入内容。

我的问题:

  1. 在test2.c中,我只将getchar()函数赋值给变量'c',我从不调用/调用该函数,为什么要调用它?我说它被调用的原因是因为当我运行它时,它产生与test1.c相同的结果

  2. 我认为只有在调用/调用函数时才会调用函数,就像在test1.c中一样,我调用了getchar()的函数。但是在test2.c中,我从不调用该函数,我只将getchar()函数赋给变量'c'

2 个答案:

答案 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