C语言函数原型声明中,参数为空,请解释以下运行结果。
#include"stdio.h"int main(int argc,char *argv[])
{
double n = 20;
void test();
test();
test(n);
return 0;
}
void test(double a )
{
printf("n = %f\n",a);
}
为什么运行test()函数时,会把double a被赋值为0,声明无参函数原型是适用于所有该函数的定义吗?
本例在VS2008下运行通过。
回答:
参考这个问题:http://stackoverflow.com/ques...
你的做法属于编译器的未定义行为,将参数赋为零只是一种可能。建议不要这么做。
回答:
现在的编译器真NB,这要是以前, test() 根本不会执行,会报错。
C++中,函数名称相同,但是参数个数和类型不同,在调用的时候编译器会根据参数来匹配应该执行那个函数。
然而C里是没有函数重载功能的。
不论怎样,声明函数的时候把参数类型带上。
以上是 C语言函数原型声明中,参数为空,请解释以下运行结果。 的全部内容, 来源链接: utcz.com/p/195834.html