2 ymr00 ymr00 于 2014.10.07 22:18 提问

C 字符串指针内存问题

char * str="new";

str 的值是否是“new”字符串在常量存储区的地址?
用cout<<str ;直接输出结果为什么是new ?

2个回答

BillyThe
BillyThe   2014.10.07 22:39

嗨,

str确实是指向new字符串的指针,而且cout<<str输出new没有任何问题的。

猜测的你的疑惑:为什么不输出new字符串地址值?

cout使用<<对待输出的不同数据类型对象操作进行了重载,用cout<<输出str时,cout自动解析为输出str指向的字符串值,即为new。
若想输出new字符地址值,可以先将str转换为void *类型,cout就只能输出地址值了

按照标题,说是C的问题,那么可以使用c I/O printf测试如下两种输出(cout为c++ iostream):

1: printf("%s\n", str);
2: printf("%d\n", str);

第一个语句输出结果应该和cout一样为new
第二个语句输出应该为new字符串地址值。(如果报错,将str强制类型转换为int)

希望能帮到你

u010136832
u010136832   2014.10.09 09:05

问什么要把C和C++ 弄到一起说呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!