首页 > 编程语言 > 详细

C++ 指针基址1

时间:2014-10-13 19:33:38      阅读:296      评论:0      收藏:0      [点我收藏+]

char *p=(char *)&n;中括号中为什幺要加个*号

 

答:

&n是一个整型数值,代表变量n的地址,不包含其所保存的数据的类型信息(也就是说只凭借一个地址是不能推测出,该地址所存储数据的类型)。而编译器为了保证程序的准确性,要对程序中操作的数据进行类型检查(例如赋值操作中,检查两个操作数类型是否匹配)。
char *p=(char *)&n;这条语句中,希望通过指针p操作n所在地指出的数据,这时必须通过强制转换,为n所在地址附加数据类型信息。也就是表明这是个存储char类型变量的地址。这样当指针p进行++或--等操作时,编译器才能确定指针的偏移量。若想表明某个地址是char类型数据的地址,必须用char *对该地址进行强转。char表示该地址存储的数据类型,*表示操作的是一个地址,不加*就会当作普通的强制转换,返回的是将n的地址作为一个整数,保留一个字节后的数据。

C++ 指针基址1

原文:http://www.cnblogs.com/meyon/p/4022837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!