在函式中陣列退化為指標
int ar=;
int n=sizeof(ar)/sizeof(ar[0]);
ar[0]=100;//*(ar+0)=100
for(int i=0;iprintf("%d %d %d \n", ar[i] ,*(ar+i),i[ar]);
} // =>* (ar+i), * (ar+i) , * (i+ar)
// 輸出三列相同的值
int *p=ar; //正確 ==int *p=&ar[0]
//ar 是整形指標
//*(p+1)=>p[1]
for(int i=0;iprintf("%d %d",ar[i],p[i]);//=>* (ar+i) , * (p+i)
ar [ ]=;
int * p=ar;
&ar =>首元素位址
&p =>指標位址
ar++;//(錯誤)陣列不能自加和賦值
p++;//指標可以
int ar[10]=;
int * p=ar;
siezof(ar)=>40,陣列的大小由陣列元素個數和型別決定
sizeof(p)=>4 , 指標的大小永遠為4
陣列指標(也稱行指標)
定義 int (*p)[n];
( )優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n。也就是說執行p+1時,p要跨過n個整型資料的長度。
陣列指標只是乙個指標變數,似乎是c語言裡專門用來指向二維陣列的,它占有記憶體中乙個指標的儲存空間。
指標陣列
定義 int *p[n];
優先順序高,先與p結合成為乙個陣列,再由int* 說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。這裡執行p+1是錯誤的,這樣賦值也是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]…p[n-1],而且它們分別是指標變數可以用來存放變數位址。但可以這樣 * p=a; 這裡*p表示指標陣列第乙個元素的值,a的首位址的值。
指標陣列是多個指標變數,以陣列形式存在記憶體當中,占有多個指標的儲存空間。
陣列和指標的區別與聯絡
區別 c語言把記憶體劃分成四個區,它把一般的變數和陣列等存在於記憶體中的棧區,所以陣列在c語言的定義中只是一組同型別的普通變數,即使這個變數有可能是指標。所以他的作用比指標小的很多,而指標可以指向任何區的任何資料,所以就會覺得指標和陣列名很像,但是必須要注意的是,陣列名只是指標中的一種,它是指標中只...
陣列和指標的區別與聯絡
指標和陣列的不同 1.指標和陣列儲存的資料內容不同 指標儲存指標變數,即儲存資料的位址 陣列儲存同一型別資料的值 2.指標用於動態資料結構,就是說指標儲存的資料可以改變 而陣列用於儲存固定數目且資料型別相同的元素即一旦陣列的大小定了就不容易變了 3.指標用malloc 和free 來分配空間和釋放空...
指標陣列 陣列指標 陣列的區別與聯絡!
一 基本定義 1.指標陣列 char arr 4 arr就是我定義的乙個指標陣列,它有四個元素,每個元素是乙個char 型別的指標,這些指標存放著其對應字串的首位址。1 這個指標陣列有多大呢?答案是16個位元組,因為它是乙個指標陣列。這是廢話,正話下面說 每當出現這些問題時,腦子裡一定要第一時間反應...