#define _crt_secure_no_warnings
#include#includeint main(int argc, char *argv)
; int(*p)[5] = &arr;
//typedef與賦值操作不能同時使用。
typedef int(*p)[5];
//p指向的是整個陣列的位址
//printf("%d\n", (*p)[1]);
p arr_p;
//陣列指標所代表的是陣列的首位址,及整個陣列的位址。
//所以在測試(*p)的位元組大小時,與陣列名相同。
printf("%d\n", sizeof(arr));//20
printf("%d\n", sizeof(*p));//20
printf("%d\n", sizeof(*arr_p));//20
system("pause");
return 0;
}
一.陣列名與陣列指標變數的關係
arr的內容是首元素的位址,&arr的內容是這個陣列的位址。
陣列指標的本質就是指標,這個指標指向陣列的首位址,即這個陣列的位址。
對陣列陣列指標進行間接尋(*)址操作得到的就是陣列的首元素位址。所以,再對*p進行間接定址或下標訪問時,就可以得到之後的陣列中的元素了。
二.typedef的一些問題
此外,在使用typedef對變數起別名的同時,不能夠對變數進行賦值操作。
typedef一般對構建好的型別起別名(在此案例中,需要先定義陣列指標,再使用typedef)。
c語言中陣列與sizeof
我以前的理解是 陣列名字就是指向陣列首元素的指標,然而用sizeof 運算元組名字,把我又弄得有些疑惑了。查了查資料,終於明白了。原來,陣列名字做形參時才被當作指標。而sizeof 並不是乙個函式,而是乙個單目運算子,所以sizeof 裡寫陣列名字,返回的就是陣列佔了多少位元組。例如 char a ...
c語言中的陣列sizeof和strlen
sizeof strlen sizeof 返回乙個物件或者型別所佔的記憶體位元組數。strlen 用來計算字串的長度,遇到 0 結束。我們分別從一維陣列,字元陣列,二維陣列的例子來分析。注 陣列名代表整個陣列的時候只有兩種情況 sizeof 陣列名 陣列名單獨在sizeof中時表示整個陣列。陣列名 ...
c語言中的sizeof
一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...