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