Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

c語言陣列

/* prog9_4, 一維陣列內元素的設值 */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int i,age[3];

for(i=0;i<3;i++)

{

printf("請輸入age[%d]的值:",i);

scanf("%d",&age[i]); /* 由鍵盤輸入數值給陣列age裡的元素 */

}

for(i=0;i<3;i++)

printf("age[%d]=%d\n",i,age[i]);

system("pause");

return 0;

}

為何要&

scanf("%d",&age[i]);

不是陣列就不用&ㄇ

像字串就不用&

/* prog4_17, 讀取輸入緩衝區內殘留的資料 */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int num;

char str[10];

printf("請輸入一個整數:");

scanf("%d",&num);

printf("num=%d\n",num);

printf("請輸入一個字串:");

scanf("%s",str);/* 輸入字串 */

printf("str=%s\n",str); /* 印出字串的內容 */

system("pause");

return 0;

}

scanf("%d",&num);~~~~差在哪阿

2 個解答

評分
  • 1 0 年前
    最佳解答

    因為它後面加了 [i]!

    這時,它(age[i]) 不再是陣列變數,是普通的變數。

    所以要在前面加上 & 來取址。

    說實話,對同一維陣列而言,這是不太好的設計法!

    改成 +i 就不用再在前面加 & 了,如:

    scanf("%d", age+i);

    因為,指標可以做加法運算(減法也可,但比加法不安全。)。

    所以,age+i 仍是個指標,可以讓 scanf 正確輸入。

    不過,書上應該只是要示範如何一個一個輸入!

    一般程式上不會這樣用!

    如:

    age[0] = 0;

    age[1] = 2;

    age[2] = 8;這是幾歲?28歲?

    還是三個人的歲數?

    這只是個示範操作而已。

    哪不懂請補問。^_^

    2010-09-13 06:19:54 補充:

    我習慣早起。

    你失眠?

  • 1 0 年前

    array的名稱代表著第一個元素的位址, 如要取得第一個元素之外的位址則要使用

    &array[index], 當然index也可以是0

    所以 &array[0],其實就是等於 array ,都是取回陣列中第一個元素的位址.

    至於 &num 這個就單純了,就是取回num的位址囉

    2010-09-13 06:10:37 補充:

    Jacob Lee 大大 你也失眠阿? ^^

還有問題?馬上發問,尋求解答。