我正在学习C,我在一本书中看到函数原型的形式为void f(),在函数声明或调用函数中,f函数接受参数.
因此在函数声明中我们有类似void f(long double y [],long double A)和调用函数中的f(y,A).
该函数正在对数组执行操作,即在调用函数时,数组y中的某些元素正在发生变化.A只是一个不变的常数值.我有两个问题:
如果在程序顶部定义函数原型为void f()这是一个好习惯吗?或者将它作为函数声明中的void f(long double y [],long double A)更好?
被调用函数f正在改变数组y中的元素.无效的正确返回类型?该程序工作正常,如上所述的空白.
或者我应该将所有"空洞"改为"长双".
我正在使用long double,因为我需要尽可能多的精度,尽管在我的机器上,double和long double给我15个精确数字.
非常感谢
AnT*_*AnT 10
你的问题会受到术语混淆的影响.
void f();
Run Code Online (Sandbox Code Playgroud)
是不是一个函数原型中.这是一个函数声明的是不引入的原型.与此同时
void f(long double y[], long double A);
Run Code Online (Sandbox Code Playgroud)
也是一个函数声明,这个是原型(即它确实引入了原型f).
要回答你的问题,是的,用原型声明函数总是一个好习惯(即用原型声明它们比没有原型更好).通常,您应该为所有外部函数声明原型(并且void f()不是原型).
至于退货类型,这完全取决于您的意图.我没有看到你正在改变数组元素的事实应该让它更好地返回long double而不是void.
如果在程序顶部定义函数原型为void f()这是一个好习惯吗?或者将它作为函数声明中的void f(long double y [],long double A)更好?
绝对是后者 - 前者没有为编译器提供编译时检查的任何类型信息.void f()告诉编译器f采用未指定的参数列表.无论如何.
被调用函数f正在改变数组y中的元素.无效的正确返回类型?该程序工作正常,如上所述的空白.
返回类型与要修改的参数无关.void如果要指示成功代码,则可以使用非返回类型.