这是我的代码的一部分,你知道导致这个缺失的原因吗?在“类型”错误之前?当我在main()函数中删除sort(arr,size)时它会消失...
#include <stdio.h>
void sort(int*, int);
int main() {
int arr[] = {5, 1, 3, 0, 9};
int size = sizeof(arr) / sizeof(arr[0]);
sort(arr, size);
int i;
for(i = 0; i < size; i++)
printf("%d", arr[i]);
getchar();
return 0;
}
void sort(int *array, int size) {
// ...
}
答案 0 :(得分:3)
您最有可能使用严格遵循C89的编译器,因此不允许您在同一块中的非定义代码之后定义变量。将int i;
移到sort
来电之上,它应该再次有效:
int main() {
int arr[] = {5, 1, 3, 0, 9};
int size = sizeof(arr) / sizeof(arr[0]);
int i;
sort(arr, size);
for(i = 0; i < size; i++)
printf("%d", arr[i]);
getchar();
return 0;
}
或者甚至更好,如果编译器支持,请考虑使用C99标准。这甚至可以让您内联int i
,例如:for(int i = 0; i < size; i++)
答案 1 :(得分:3)
如果您在正确的旧学校C中,则无法在函数调用后定义变量。
所以就这样做:
#include <stdio.h>
void sort(int*, int);
int main() {
int arr[] = {5, 1, 3, 0, 9};
int size = sizeof(arr) / sizeof(arr[0]);
int i;
sort(arr, size);
for(i = 0; i < size; i++)
printf("%d", arr[i]);
getchar();
return 0;
}
void sort(int *array, int size) {
// ...
}
答案 2 :(得分:2)
你不能在C99之前的代码中声明变量。移动你的int i
;到块的开头,接近其余的变量声明。