![](/img/trans.png)
[英]“error: subscripted value is neither array nor pointer nor vector”, but why?
[英]Why does using square brackets cause a subscripted value is neither array nor pointer nor vector error?
我是 C 的新手,我正在嘗試熟悉基礎知識,我認為我制作了一個只需要一個數組並使用 function 打印數組中的信息的程序。 但是,當我嘗試編譯此程序時,出現以下錯誤:
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("%d\n", 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};
應該解決你的問題。
編輯:
在這種情況下,您甚至可能沒有定義數組的大小,因為使用{...}
構造編譯器會在構建時計算數組的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.