我是C的新手,我正在努力熟悉基本知识,我认为id制作了一个程序,它只需要一个数组,并使用一个函数打印数组中的信息。然而,当我试图编译这个程序时,我得到了以下错误:
error: subscripted value is neither array nor pointer nor vector
printf(" %d", data[i]);
^
我目前使用的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int maxReturn(int a, int b, int c, int d);
int main(){
int arr[4] = {1,4,8,2};
int max = maxReturn(arr[0],arr[1],arr[2],arr[3]);
printf("%dn", max);
return 0;
}
int maxReturn(int a, int b, int c, int d){
int data = {a,b,c,d};
for(int i; i < 4; i++){
printf(" %d", data[i]);
}
printf("n");
return data;
}
我有点不知所措,因为在我下面的教程中,他们使用data[I]打印出值。为什么这样不好?
使用{...}
构造声明int
,就像初始化数组一样。可能,您忘记了将data
声明为int
的数组。
更换线路:
int data = {a,b,c,d};
带有:
int data[4] = {a,b,c,d};
应该可以解决你的问题。
编辑:
在这种情况下,您甚至可能不定义数组的大小,因为使用{...}
构造,编译器会在构建时计算数组的大小。