[問題] address的問題

看板C_and_CPP作者 (小天)時間11年前 (2014/08/28 10:28), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/3 (看更多)
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語言新手,麻煩各位解答了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409192933.A.B4A.html

08/28 10:33, , 1F
1. 誰說的. 我的就不是
08/28 10:33, 1F

08/28 10:34, , 2F
2. 為什麼藥可以相減呢? 相減得到的東西要幹嘛用
08/28 10:34, 2F

08/28 10:35, , 3F
房子減車子 = 空車庫 ?
08/28 10:35, 3F

08/28 10:35, , 4F
至少也得房子減房子 = 沒房子吧
08/28 10:35, 4F

08/28 10:36, , 5F
那你覺得都是 int * 就可以相加嗎
08/28 10:36, 5F

08/28 11:12, , 6F
這個倒是很久以前有戰過... pointer **不是** 位址
08/28 11:12, 6F

08/28 11:12, , 7F
他已經是個比較抽象的概念了
08/28 11:12, 7F
文章代碼(AID): #1J_fFbjA (C_and_CPP)
文章代碼(AID): #1J_fFbjA (C_and_CPP)