a 1和(int )a 1的分析

2021-06-23 07:21:27 字數 2843 閱讀 6362

首先解釋a與

&a   

他兩的值一樣但是意義不同,a表示的是陣列首元素的首位址(處於元素層,加減是以元素所佔記憶體大小為單位計算),&a表示的是陣列的首位址(以陣列整個長度為單位進行計算)。這樣再來解釋監視視窗的值的得來,首先 &a

為陣列首位址和a

即a[0]

的位址一樣

0x0012ff50

,&a   

的型別是

int(*)[5]   

指標——

指向int[5]

陣列的首指標 a

為陣列首元素首位址為

0x0012ff50

即a[0]

的位址,

a    

的型別是

int[5]       陣列

a+1即為

a[0]

的首位址

+1,即為

&a[0]+sizeof

(int

)=0x0012ff50+4=0x0012ff54,

&a+1

即陣列的首位址

+這個陣列的長度

即0x0012ff50+5*sizeof

(int

)=0x0012ff50+20=0x0012ff64

顯然已經超越了陣列的界限。 p

為&a+1

強制轉換的位址

即為0x0012ff64 所以

*(a+1)=a[1]=2

*(p-1)=a[4]=5

&a[0]

的型別是

int *        

指標——

指向int

型別的指標。

sizeof(a)=20;

sizeof(*a)=4 =sizeof(a[0]);

sizeof(*&a)=20;//

因為p=&a,

所以=sizeof(*p),

而*p=a,

所以=sizeof(a)=20; 2

、 #include

void main ()

*p;}

問題:p+0x1=?

(unsigned int*

)p+0x1=?

(unsignedlong)p+0x1=?              

問題目的:搞懂乙個指標變數與乙個整數相加減,怎麼解析。

分析:p為指標

所以sizeof(p

)=4 *p

佔20位元組

p的值為

0xcccccccc

p+0x1

的值為0xcccccccc+sizeof(*p)  *  0x1=0xcccccccc+0x14=0xcccccce0 /

與&a+1

一樣,指標變數與乙個整數相加減並不是用指標變數裡的位址直接相加減,這個整數的單位不是

byte

而是元素的個數。

(unsignedint*)p 

這裡被強制轉換成乙個指向無符號整型的指標,

所以(unsigned int*

)p+0x1=0xcccccccc+sizeof(unsigneint)  * 0x1=0xcccccccc+0x4=0xccccccd0。

(unsignedlong)p 

任何資料一旦強制轉換,其型別就改變,所以

p不再是指標,他的值依然是

0xcccccccc(

十進位制為

3435973836)

,只是

(unsignedlong)p+0x1

變成了乙個無符號數加上乙個整數,其值為

分析:a代表陣列的首元素的首位址,

(int)a

強制轉換後為乙個整數,轉換後

a不再代表位址,所以加

1,相當於直接加

1,再經過強制轉換成位址賦給

ptr2

,,則這時

ptr2

所指的位址為

a[0]

的第二個位元組(

a[0]共佔4

個直接),所以

ptr2

的值為0x0012ff54+1=0x0012ff55

開始的四個位元組。

*ptr2

的值就要考慮計算機的

大小端模式

了,我的電腦為

小端模式

,所以值為

33554432(16

進製0x2000000)。

excel表中 A 1和A 1和 A1都有什麼不同

通俗一點解釋 countif a 1 a1,a1 指在a 1 a1中查詢與a1的資料相同的所在單元格的個數,當公式下拉時,就變成了countif a 1 a2,a2 countif a 1 a3,a3 但是 countif a 1 a1,a1 1這個公式只是乙個條件,不能單獨成立。當它找出所在區域中...

c語言那些細節之a 1和 a 1的區別

首先a是乙個陣列名,當看到這個a與 a時,一般我們的理解都是這個陣列的首位址。沒錯,如果加上列印的話,確實兩個值是一樣的。不過 a是整個陣列的首位址,a則是陣列首元素的位址,雖然值一樣,但是意義卻不相同。在此之前有必要先看下c程式在記憶體中的分布圖。下面來看乙個例子吧還是。示例 html view ...

int a的python學習筆記1

搜尋環境變數 直接在windows左下的搜尋欄 輸入 環境變數 找到並雙擊進入 進入環境變數頁面 在環境變數裡面找到 path 雙擊進入path編輯頁面 在 path 最後面加上剛剛python的安裝路徑,如果前面沒有分號 英文輸入狀態下的分號 記得加上,python安裝路徑如果自己安裝時沒有改變一...