c++如何用cout对象输出char型数组的内存地址,前提只准用char型数据表示
如题书中这样写到:cout(int*)"abcdefg";为什么要声明为int*型呢????是不是char型指针无法表示内存地址,如果用char型指针表示,只会将其当作字...
如题书中这样写到:cout (int*)"abcdefg";
为什么要声明为int*型呢????是不是char型指针无法表示内存地址,如果用char型指针表示,只会将其当作字符串来处理啊???????? 展开
为什么要声明为int*型呢????是不是char型指针无法表示内存地址,如果用char型指针表示,只会将其当作字符串来处理啊???????? 展开
展开全部
应该是cout << (int*)"abcdefg";你忘写<<了。是这样的,C++把cout << 字符型指针;这样的输出格式安排给输出字符串了,就是说如果有char a[11]="1234567890";定义,那么cout << a;被编译器解释为一个接一个地按字符格式从地址a开始输出a指向的内容,直到遇到'\0'为止,且不输出'\0'(即1234567890),而并不解释为输出指针a的地址值(即1的地址)。而对其他类型的指针,编译器都把cout << 指针;这种格式解释为输出指针的值(即地址)。所以要输出字符型指针的值,就得想一个办法,那就是把字符型指针临时强制为其他类型的指针。其实不是一定要强制成int *,强制成float *、double *都行,但最好的是强制为void *型,这样不易产生误解,因为void *型指针除了是个地址外没有别的类型性质。
追问
一楼说不可以转换为浮点型,因为这样会非法,到底哪个对呢??
展开全部
cout (cin) 对于char * 类型特殊关照 输出指针指向的字符串 占用了 , 既然这个坑已被占了,这个坑就不能再去用来输出指针(字符串的地址),[不输出 地址值 而输出地址值 中 存放的字符串],不然你打算让他们 如何输出字符串呢亲
追问
输出指针指向的字符串 占用了??这句话什么意思??是指针被字符串占用了吗??所以才无法表达字符串的地址吗???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的。。。
更多追问追答
追问
既然可以处理为int*型,那么可不可以处理为整形和浮点型呢??????
追答
不可以,指针转换为float非法,转换成int会丢失数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询