这是我一直试图运行的简单而简短的代码:
#include <stdio.h>
int const SIZE = 5;
void a(int *arr);
int main(){
int arr[5] = {1,2,3,4,5};
a(arr);
return 0;
}
void a(int *arr){
int *i;
for (i=arr; i<&a[5]; i++)
printf("%d",*arr[i]);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误/警告:
main.c: In function ‘main’:
main.c:15: error: variable-sized object may not be initialized
main.c:15: warning: excess elements in array initializer
main.c:15: warning: (near initialization for ‘arr’)
main.c:15: warning: excess elements in array initializer
main.c:15: warning: (near initialization for ‘arr’)
main.c:15: warning: excess elements in array initializer
main.c:15: warning: (near initialization for ‘arr’)
main.c:15: warning: excess elements in array initializer
main.c:15: warning: (near initialization for ‘arr’)
main.c:15: warning: excess elements in array initializer
main.c:15: warning: (near initialization for ‘arr’)
main.c: In function ‘a’:
main.c:22: error: subscripted value is neither array nor pointer
main.c:23: error: array subscript is not an integer
Run Code Online (Sandbox Code Playgroud)
警告都与数组的初始化有关:如果我把'5'代替'SIZE'就可以了,为什么呢?我的错误根本没有得到.我正在传递指针作为参数,问题出在哪里?thatnks!
首先,那应该是:
for (i=arr; i<&arr[5]; i++)
^^^
Run Code Online (Sandbox Code Playgroud)
但其次,i它不是一个索引,它是一个指针.所以你的打印声明应该是:
printf("%d",*i);
Run Code Online (Sandbox Code Playgroud)