c c 兩個指標變數位址的相減

2021-09-08 17:39:17 字數 506 閱讀 5310

如下例程:

#include "stdio.h"

#include "string.h"

using namespace std;

#define uint8_t unsigned char

#define uint16_t unsigned short int

#define uint32_t unsigned int

typedef structsb_typedef;

sb_typedef sb[2] = , };

#define data_type uint8_t

void main()

定義結構體型別sb_typedef,其長度sizeof(sb_typedef)是8,定義兩個sb_typedef型別的結構體sb[0]、sb[1],這兩個結構體實體地址相差是8,但(&sb[1] - &sb[0])是多少呢?當然是1了,若把這兩個結構體的指標型別轉為其他型別,則又是其他差值了。

兩個指標相減

原文 如果兩個指標指向同乙個陣列,它們就可以相減,其結果為兩個指標之間的元素數目。假設我住在廣場路124號,mag住在廣場路142號,每家之間的位址間距是2 在我這一側用連續的偶數作為街道位址 那麼mag家就在我家往前 142 124 2家,也就是說可以得到我們兩家之間相隔8家。也就是說可以利用兩個...

關於陣列兩個元素位址相減的問題

昨天筆試也有這麼道題目,int arraytmp 10 int ntmp arraytmp 4 arraytmp 0 問ntmp 當時想也沒想寫了ntmp 16 回家在機器上調試執行了一下,結果ntmp 4。因為不常用這種方法,所以覺得很納悶兒。看了下反彙編的 發現 int ntmp arraytm...

關於陣列兩個元素位址相減的問題

includeint a 5 main 執行結果 檢視反彙編的 發現 int ntmp a 4 a 0 00416b87 lea eax,ebp 28h 00416b8a lea ecx,arraytmp 00416b8d sub eax,ecx 00416b8f sar eax,2 00416b9...