[爆卦]指標變數意思是什麼?優點缺點精華區懶人包

為什麼這篇指標變數意思鄉民發文收入到精華區:因為在指標變數意思這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者garlos (綠豆開心果)看板Programming標題[問題] 指標變數相減問題時間Sat ...

指標變數意思 在 伍家謙 Instagram 的最佳解答

2021-09-03 13:32:39

收到一啲有睇我story嘅朋友DM,而家一次過答大家先;係呀,我加入咗Nike嘅Pacer team。 諗番年幾之前,疫情嚴重,球場封框,冇波打又想保持番個運動量,就惟有喺屋企附近跑下步。有人話跑步會上癮,原來係真嘅。由最初求其立亂跑,到會自己主動睇下人哋嘅訓練方法;由認為郁下跑十幾公里悶死人,到...



請問各位強者大大

寫了一個很小的程式來驗證指標變數相減的結果

#include <stdio.h>

int main(int argc, char *argv[]){

int *a = (int *)0x1ff1234;
int *b = (int *)0x1ff0000;
int c = (int )a;
int d = (int )b;
printf("a = %p\n", a);
printf("b = %p\n", b);
printf("substract a - b value = %p\n", a - b );
printf("substract c - d value = %p\n",c - d );
return 0;
}
==================================
輸出結果為
a = 0x1ff1234
b = 0x1ff0000
substract a - b value = 0x48d
substract c - d value = 0x1234

小弟愚鈍的是為甚麼 a - b 不是 0x1234 呢

不就指標指向的address 相減嗎

非常感謝解惑!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.185.75.196
james732:因為它們是int指標,距離相差0x48D個int 114.35.184.77 10/29 03:23
james732:0x48D*sizeof(int) = 0x48D*4 = 0x1234 114.35.184.77 10/29 03:24
lmr3796:我記得指標相減是未定義的行為吧? 140.112.217.3 10/29 13:21
akasan:google "ptrdiff_t" 114.36.169.185 10/30 00:26
buganini:有定義啊 指標-指標=整數 140.131.149.15 10/30 12:11
buganini:指標+整數=指標 型態變化是這樣 140.131.149.15 10/30 12:12
buganini:不過據說在某些平台上指標不只是offset 140.131.149.15 10/30 12:12
buganini:或是說記憶體位置不是線性的 就不能套用 140.131.149.15 10/30 12:13
Favonia:這程式以 C 標準來說完全沒定義,不過可能 140.112.30.39 10/30 22:23
Favonia:在很多電腦上都會有類似的答案... 140.112.30.39 10/30 22:23
Favonia:buganini: C 標準比你想像得龜毛很多 xDDD 140.112.30.39 10/30 22:24
buganini:C99, Section 6.5.6 有一些說明 140.131.149.15 11/01 10:18
Favonia:buganini: 建議搜尋一下有 "array" 的句子 140.112.30.39 11/01 15:54
Favonia:這個程式中的指標都不是源自同一 array 140.112.30.39 11/01 15:54
Favonia:自然都沒有定義。姑且不談 printf 的 %p. 140.112.30.39 11/01 15:55
buganini:我知道你的意思,指標操作確實有很多隱雷 140.131.149.15 11/01 19:41
buganini:像offsetof也是 140.131.149.15 11/01 19:42

你可能也想看看

搜尋相關網站