1.&(取地址符)是取偏移地址还是段地址?
答:我用 sizeof()打印取地址符,发现是两个字节。还有得到一些其他结论,就是强制转换,
(int),(long)等等都是表示强制转换为数据。括号里加上*就是强制转换为地址。通过以上我进
行设计,如下:
编译链接会提示警告,因为你把地址强制付给变量 q,变量是放数据的,这时候需要加上强制
转换(int)才能把地址转换为数据赋值个 q,经编译链接果然没有警告。
再进行设计,如下:
编译链接会报错,这是和张圣那个 q=&ch (这里的 q 也是 long 型)结果一样,报错了,int 型
只是警告,而 long 型就报错了,这里显然 shao 是个偏移地址,怎么会报错了,这里已经提
示我们其实&就是取偏移地址。置于为什么报错,因为 shao 是个地址,如果你要强制赋值
给 long 型变量,编译器不知道怎么去扩展地址,就是这个地址本来就是两个字节,要扩展
四个字节那成什么了。如果我们在 shao 前面加(long)这样编译器就知道你是想把段地址
和偏移地址转换成数据复制给 q,经验证在上数据的强制转换,编译链接结果确实正确。
再进行设计,如下:
编译链接会出现警告,和上面警告一样如下:
评论0