为什么使用方括号会导致下标值既不是数组也不是指针也不是矢量错误

  • 本文关键字:数组 指针 错误 下标 方括号 c
  • 更新时间 :
  • 英文 :


我是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};

应该可以解决你的问题。

编辑:

在这种情况下,您甚至可能不定义数组的大小,因为使用{...}构造,编译器会在构建时计算数组的大小。

最新更新