指標運算不同於算數運算,不能簡單加減

2022-08-18 05:21:11 字數 499 閱讀 4592

必須注意,指標運算不同於常規的算術運算,一般地,40000+2的結果是40002,但當乙個指標加上或減去乙個整數時,指標並非簡單地加上或減去該整數值,而是加上該整數與指標引用物件大小的乘積,而物件的大小則和機器與物件的資料型別有關。例如在上述情況下,語句

ptra+=2;

的結果是40000+4*2=40008, ptra也隨之指向元素a[2],同理,諸如語句

ptra-=2;

ptra++;

++ptra;

ptra--;

ptra--;

等的運算原理也都與此相同,至於指標與指標相減,則會得到在兩個位址之間所包含的陣列元素的個數,例如ptra1包含儲存單元40008,ptra2包含儲存單元40000,那麼語句

x = ptra1 - ptra2;

得到的結果就是2(仍假設整數在記憶體中佔4個位元組)。因為除了陣列元素外,我們不能認為兩個相同型別的變數是在記憶體中連續儲存的,所以指標算數運算除了用於陣列外沒有什麼意義。

指標的算數運算

1.位元組數 char short int float double long longlong 位元組數 1 2 4 4 8 4 8 2.指標 1,計算指標 1具體加幾個位元組的方法是,給指標去掉乙個型號,讓後用sizeof 求出位元組大小 int p 整形指標變數 p 1,加4位元組 sizeo...

指標的算數運算

我們知道指標也是一種變數,既然是變數理論上便可進行算數運算,今天我們來一起 一下指標的算術運算。printf d,d n 0xa,0x0000000a int arr 10 int p arr p 10 p 大家看一下這串 思考一下這裡面的p 是加的什麼呢?這個p 意思是加乙個單元格,我們知道指標是...

指標的算數運算

指標加法 指標 1 可能出現的情況 加整個陣列 加1個位元組 加1個單元格 討論第1種情況 加整個陣列無現實意義,不可取。討論第2種情況 int arr int p arr p 10 p p 20 printf d,d n arr 0 arr 1 整形陣列乙個單元格佔四個位元組,將10轉化成十六進製...