使用指针加载数组时出现警告参数名问题求助
问题排查与解决方案
嘿,我一眼就揪出你代码里触发警告的根源啦——错误的函数调用写法:
1. 函数调用时多余的返回类型声明
你在main函数里写的这行:
void FLoad(a);
这根本不是函数调用!在C语言里,只有声明函数的时候才需要加返回类型void,调用函数时直接写函数名加参数就行。编译器看到这行,会误以为你在重复声明FLoad函数,但这次声明的参数只有隐式的int*类型却没有参数名,所以就弹出了“参数名缺失”的警告。
把这行改成正常的函数调用就解决问题了:
FLoad(a);
2. 额外的规范建议(非警告直接原因,但值得修正)
- 标准C中
main函数的返回类型应该是int而非void,建议改成int main(),最后加上return 0;,这样程序的跨平台兼容性更好。 - 你贴的参考程序之所以运行正常,就是因为它的函数调用写法正确,没有多余的返回类型声明。
修正后的完整代码
#include<stdio.h> #define T 10 void FLoad(int *); int main () { int a[T]; // 正确的函数调用方式 FLoad(a); return 0; } void FLoad(int *a) { int x; for (x = 0; x < T; x++) scanf("%d", a+x); }
这样修改后,那个烦人的警告就会消失,程序也能正常运行啦。
内容的提问来源于stack exchange,提问作者Alberto Zavala
相关产品推荐
相关产品推荐

