指標就在前方不遠處...
今日主題:一維陣列
接下來我們將焦點轉到一維陣列,要注意的是陣列名稱即是該陣列啟始位址。
請看程式碼:
#include <stdio.h>
#include <string.h>
main()
{
int x[3];
int i;
for(i = 0; i < 3; i++){
scanf("%d", &x[i]); // 依序輸入:1 2 3
//也可以這樣寫
//scanf("%d", x+i);
}
for(i = 0; i < 3; i++){
printf("%d,", x[i]); // 結果:1 2 3
}
}
//也可以這樣寫
//scanf("%d", x+i);
不能寫x++嗎??...
cdfu提到:
不能寫x++嗎??
不能,因為X是陣列名稱,一旦宣告後即視為常數,常數不能改值,故不能用++。
所以
int *y;
y=x;
y++;
這樣就可以了嗎??...
這樣可以,我剛有試過~
cdfu提到:
int *y;
y=x;
y++;
我覺得這是指標(或者 C 語言)最方便也最令人害怕的地方
y 是 int 的指標
(*y)++ 是數字加一
y++ 是指標加一(是 byte 還是一個 int 那麼多 byte)
指標隨便指或不小心指錯地方
然後隨便改一些值
程式或整個 OS 就被拉下來
iT邦幫忙MVPantijava提到:
(是 byte 還是一個 int 那麼多 byte)
此例是一個 int 那麼多 byte,若指標是指向一個char,則位址增加量是一個byte
iT邦幫忙MVPantijava提到:
(*y)++ 是數字加一
y++ 是指標加一
魔鬼總是隱身小地方...