簡體   English   中英

為什么使用方括號會導致下標值既不是數組也不是指針也不是向量錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM