C指針相減

源代碼:

int array[] = {1,2,3};
int *p = array;
int *q = array + 2;
int v = q - p;

匯編:

...
;從棧上取指針q的地址賦值給rax
0x100003f32 <+82>:  movq   -0x38(%rbp), %rax
;從棧上取指針p的地址賦值給rdx
0x100003f36 <+86>:  movq   -0x30(%rbp), %rdx
;rax-rdx結(jié)果賦值給rax. 這里rax等于0x8
0x100003f3a <+90>:  subq   %rdx, %rax
;rax算術(shù)右移2位,結(jié)果賦值給rax. 這里rax就是2
0x100003f3d <+93>:  sarq   $0x2, %rax
...

兩個(gè)整型指針相減,結(jié)果是: 地址值差值 / sizeof(int)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 面向?qū)ο蟮某绦蛟O(shè)計(jì)思想是什么?答:把數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法封裝形成一個(gè)個(gè)的對(duì)象。 什么是類?答:把一些...
    飛揚(yáng)code閱讀 2,799評(píng)論 0 11
  • 1.源碼文件如何變成可執(zhí)行文件(*) 需要以下4個(gè)步驟:(1)預(yù)處理階段:預(yù)處理器根據(jù)以#開(kāi)頭的指令,修改主要包括...
    __bba3閱讀 537評(píng)論 0 1
  • 1.new 、 delete 、 malloc 、 free 關(guān)系 delete 會(huì)調(diào)用對(duì)象的析構(gòu)函數(shù) , 和 n...
    可不期諾Cappuccino閱讀 998評(píng)論 0 0
  • 寫(xiě)在前面: 猶豫了一下,不知道該不該發(fā)這么多。畢竟題目雖全,但是其實(shí)很多人看了不到一半,估計(jì)就會(huì)默默的收藏保存,等...
    Yt_cc閱讀 14,921評(píng)論 1 6
  • 第一章 1.C語(yǔ)言學(xué)習(xí)中的重難點(diǎn) 運(yùn)算符:自增、自減運(yùn)算符(重點(diǎn)) 進(jìn)制:各種進(jìn)制轉(zhuǎn)換、原碼、反碼、補(bǔ)碼 數(shù)組:一...
    恒筠閱讀 909評(píng)論 0 0

友情鏈接更多精彩內(nèi)容