[問題] address的問題

作者: kdok123 (小天)   2014-08-28 10:28:51
int d = 3;
int *k = &d;
int **k2 = &k;
int ***k3 = &k2;
cout<< k << ' ' << k2 << ' ' << k3 << endl;
output: 印出了三個不同的位址,其中各個的差距都是12
問題一:為什麼是差距是12?
接著我在試著宣告
size_t size = k-k2;
發現了這兩個位址是不能相減的
錯誤顯示的是型別不同(一個是int*,另一個是int**)
問題二:這邊我一直沒有搞得很懂,為什麼兩個位址不能相減?
不能的理由是什麼?
C語言新手,麻煩各位解答了
作者: Feis (永遠睡不著 @@)   2014-08-28 10:33:00
1. 誰說的. 我的就不是2. 為什麼藥可以相減呢? 相減得到的東西要幹嘛用房子減車子 = 空車庫 ?至少也得房子減房子 = 沒房子吧那你覺得都是 int * 就可以相加嗎
作者: suhorng ( )   2014-08-28 11:12:00
這個倒是很久以前有戰過... pointer **不是** 位址他已經是個比較抽象的概念了

Links booklink

Contact Us: admin [ a t ] ucptt.com