簡體   English   中英

列出 C 中的數組元素

[英]Listing array elements in C

我試圖從用戶那里獲取輸入並將其存儲到一個數組中,然后使用 for 循環列出數組中的項目。 這是代碼:

#include <stdio.h>

int a[5], i, i1;

int main()
{
    printf("insert 5 integers");
    for(i=0, i<5, i++){
        scanf("%d\n", &a[i]);
    }
    for(i1=0, i<5, i++){
        printf("%d\n", &a[i1]);
    }
    return 0;
}

所以在代碼中,我得到以下錯誤:“預期';' ')' 標記之前”和“')' 標記之前的預期表達式”。 當我嘗試編碼時,我似乎經常遇到這些錯誤。 任何幫助將不勝感激以使此代碼正常工作。

PS:我們給出的一個具體相關問題是“如何通過數組的元素使用指向 go 的指針”。 我看不出使用指針會有什么幫助。 這里需要他們嗎?

更新:感謝您的回復,我已將逗號更改為分號並刪除了 i1 變量。 我還刪除了 scanf 中的“\n”和最后一個 printf 中的“&”,因為它會打印地址而不是值。 這是現在工作的代碼:

#include <stdio.h>

int a[5], i;

int main()
{
    printf("insert 5 integers\n");
    for(i=0; i<5; i++){
        scanf("%d", &a[i]);
    }
    for(i=0; i<5; i++){
        printf("%d\n", a[i]);
    }
    return 0;
}

“預期的';' before ')' token" 消息只是編譯器告訴您在 for 循環語句中缺少分號。

您的第一個 for 循環應該是:

for(i=0; i<5; i++){
    scanf("%d\n", &a[i]);
}

注意逗號是如何用分號代替的。

在第二個循環中,當您想要迭代i1變量時,您正在迭代i變量。 所以,你的第二個 for 循環應該是:

for(i1=0; i1<5; i1++){
    printf("%d\n", a[i1]);
}

注意在printf的表達式中如何省略& 如果包含& ,您將打印出數組中內容的地址(在內存中)。 使用scanf時需要& (為了寫入內存中的這些內容),但在打印內容本身時不需要。

至於指針的情況,arrays 和指針在 C 中有很多聯系。 事實上,簡單地寫

printf("%d", *a);

會給你數組的第一個元素。 Arrays 幾乎是指針算術的簡寫。 因此,您可以將a視為指向數組開頭的指針(即索引 0 處的元素)。 然后, (a+1)只是索引 1 處的元素。因此,要打印索引i處的元素,您只需要取消引用正確的指針:

printf("%d", *(a+i));

使用分號,您還應該替換該行

 for(i1=0, i<5, i++){
    printf("%d\n", &a[i1]);

for(i=0;i<5;i++){printf("%d\n", &a[i]);}

因為你在 for 循環中使用 i1 而不是 i

i1<0,i<5 

沒有意義,因為您只需要在一個變量 i1 或 i 之后進行迭代,或者您可以將其命名為 j 或您想要的任何名稱,但 for 循環內的變量應該與您的迭代相同。

在此處輸入代碼

你的for loop的語法是錯誤的,它應該是for(i=0; i<5; i++)與另一個相同,因為for(;;)的正確語法這就是為什么你的代碼中有錯誤它說'令牌'和預期的表達

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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