C語言中sizeof測試陣列指標大小問題

2021-08-29 16:27:00 字數 805 閱讀 1470

#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使用...