陣列名取位址所算數運算應注意的 trap

2022-04-06 16:39:06 字數 309 閱讀 4256

陣列名取位址所算數運算應注意的"trap"  

直接看**:

#include

int main()

程式輸出是:

陣列名作為指標array沒啥好講的,可是對陣列名進行取址 &array,得到的是指向整個陣列的指標,注意,這裡不單單是指向首個元素的指標。儘管兩者(array 和&array)在數值上一致。

對&array 這個指標進行加減運算是以整個陣列大小為基礎的,即這裡 array的大小是5,那麼&array + 2

是加上整個陣列大小的兩倍,即0x7fff8423890 + 0x14 * 2;

陣列名和陣列名取位址

在c中,在幾乎所有使用陣列的表示式中,陣列名的值是個指標常量 也就是陣列第乙個元素的位址。它的型別取決於陣列元素的型別 如果它們是int型別,那麼陣列名的型別就是 指向int的常量指標 在以下兩種場合下,陣列名並不是用指標常量來表示,就是當陣列名作為sizeof操作符和單目操作符 的運算元時。siz...

陣列名和陣列名取位址

1 int a 10 2 int p a 3 int q 10 a 第二個為指向陣列的指標.a只是a 0 的位址,a 1就是a 1 的位址了,a是整個a 10 的首位址,是以整個陣列為角度來看,雖然它與a 0 的值相同,但是 a 1就已經增加了10個int型別的位元組的長度了.1 include 2...

陣列名和陣列名取位址的區別

以下 會列印出什麼樣的日誌呢?cpp view plain copy include int a 2 int main 本機 linux 結果輸出 a 0x804a014 a 0x804a014 a 1 0x804a018 a 1 0x804a01c 沒錯,上面i 和 ii列印出來的位址是一樣的,i...