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

回到顶部