码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 指针基址1

时间:2014-10-13 21:32:27      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:ar   sp   数据   amp   bs   c++   as   程序   har   

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

 

答:

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

C++ 指针基址1

标签:ar   sp   数据   amp   bs   c++   as   程序   har   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!