C中關於陣列首元素位址和整個陣列位址的問題

2021-10-08 12:56:01 字數 664 閱讀 1124

首先,定義乙個陣列:int arra[10];

列印結果是:

可以斷定這兩者在數值上是相等的。

那麼問題來了:

1、arra+1 和 &arra + 1相等嗎?

2、sizeof(arra) 和 sizeof(&arra)相等嗎?

輸出結果:

結論:對於問題1:

1、arra和&arra在邏輯上的起點是一樣的,但是兩者實際上的「步長」不一樣。arra的「步長」是乙個(int)元素,&arra的「步長」是整個陣列的長度(10個(int)元素)。

對於問題2:

2、sizeof求被求物件佔位元組數,它關心被求物件的資料型別和個數。arra的資料型別為int型,個數為10,因此位元組數為4*10=40。&arra的資料型別為int *型,個數為1,因此位元組數為4*1 = 4。

關於陣列首元素位址與陣列首位址的區分

如果定義乙個陣列a 則陣列名a和 a 0 表示陣列首元素的位址,而 a則表示陣列的首位址,通過下面這個經典的程式則可以理解它們的區別 include int main int p a 1 int pp int a 1 printf d n p printf d n pp 1 return 0 在vs...

輸出陣列名和輸出陣列首位址(C )

char a char b abc char c int d cout a endl cout b endl cout c endl cout d endl 結果 分析 1.以字串字面量初始化的字元陣列cout陣列名可以輸出整個陣列 2.列表初始化的字元陣列必須加上字串結束符 0 才能cout陣列名...

C語言 陣列中的指標和取位址

在 c程式設計 中看到這樣一段 講解2維陣列,看起來像是能被整理總結的東西。include intmain printf d,d n a,a 0行起始位址和0行0列元素位址 printf d,d n a 0 a 0 0行0列元素位址 printf d,d n a 0 a 0 0 0行起始位址和0行0...