[问题] 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