1,我定义了char *Pstr,这个Pstr明显是个指针,为何输出coutf<<Pstr<<endl;结果不是地址,而是整个字符串??2,当后面使用int的时候cout<<arr<<endl;结果却是地址????结合1和2两问题,int和char在这里有何不同??3,我想用sizeof()求“hello”的大小,怎么求?4,定义char str[]={'a','b','c','d','e','f','g','\0'}数组的时候,cout<<str<<endl;为何结果是整个字符串?不是地址???
3 回答
侃侃尔雅
TA贡献1801条经验 获得超15个赞
运算符重载可以做任何事情,没有任何规则所只要是地址打印出就是地址。而且char*是特殊的,从来没有在哪输出过地址
运算符重载,不是int/char不同,而是重载后int*和char*不同
sizeof("hello"),这是唯一的办法,赋值给指针后只能用strlen,不能用sizeof
同样,不要总想着参数是地址,输出也是地址,如果这样,高级语言就太无用了
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
1.因为 iostream内部 cin cout 对char* 做了特殊处理.......因为c/c++ 输入输出字符串通常要用到char*
如果直接输出地址,就要用别的方法来输出字符串了 就不方便了.....所以直接输出地址 那里放着的字符串......
3、sizeof("hello");得到 字符串实际长度 + \0 占的一个字节
一般用strlen函数.......
同 1、2,str数组名 是 char* 地址
小唯快跑啊
TA贡献1863条经验 获得超2个赞
1、这是cout(const char *)函数的定义。为方便处理字符串。
2、字符串是数组,int只是一个数;
3、include <string.h>
4、同1.
- 3 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消