社区
C++ 语言
帖子详情
指针指向string和数组 返回为什么不一样
yueyufei5
2011-01-28 03:41:11
char *p="Hello";
cout<<*p<<endl;
cout<<p<<endl;
int arr[3]={1,2,3};
int *p2=arr;
cout<<*p2<<endl;
cout<<p2;
string不就是char的数组么 为什么p返回的是Hello? 但是p2返回的是一个地址
...全文
193
14
打赏
收藏
指针指向string和数组 返回为什么不一样
char *p="Hello"; cout<<*p<<endl; cout<<p<<endl; int arr[3]={1,2,3}; int *p2=arr; cout<<*p2<<endl; cout<<p2; string不就是char的数组么 为什么p返回的是Hello? 但是p2返回的是一个地址
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovesi3344
2011-01-29
打赏
举报
回复
其实,string不是一个class
而是一个typedef
今天看《effective C++》 刚好看到
你失误了 哦
[Quote=引用 1 楼 mstlq 的回复:]
string是一个class,不能简单理解成字符数组。
再说,楼主这里的不是string而是char*,cout的<<操作符对char*类型有特别的重载,可以输出字符串内容
[/Quote]
jackzhhuang
2011-01-28
打赏
举报
回复
其实就是因为指针类型不一样,就这么简单
jikeyuan1
2011-01-28
打赏
举报
回复
[Quote=引用 10 楼 piaojun_pj 的回复:]
char *p="Hello";不能简单的理解为数组,因为它是常量,你不能*p='a';而且在C++中cout<<其实是函数调用,const ostream& operator<<(char* str)const;所以cout<<p;就能够输出整个字符串,因为C++中没有重载const ostream& operator<<(int* str)const;这个版本,所以cout<……
[/Quote]
学习啦
寂寞的泡面
2011-01-28
打赏
举报
回复
char *p="Hello";不能简单的理解为数组,因为它是常量,你不能*p='a';而且在C++中cout<<其实是函数调用,const ostream& operator<<(char* str)const;所以cout<<p;就能够输出整个字符串,因为C++中没有重载const ostream& operator<<(int* str)const;这个版本,所以cout<<p2只能输出p2的值(int arr[]数组的首地址)。
modaoshi3002
2011-01-28
打赏
举报
回复
basic_string<>才是个模板类,
string是 basic_string<char>,
而实际上我们完全可以换掉这个char
常用的可以是wchar_t
modaoshi3002
2011-01-28
打赏
举报
回复
都在引用1楼,我就不引用了。
其实。。。。
。
。
。
。
。
。
。
。
string不是一个class
。
。
。
。
。
。
。
。
。
它是一个typedef
typedef basic_string<char> string;
未注销
2011-01-28
打赏
举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
string是一个class,不能简单理解成字符数组。
再说,楼主这里的不是string而是char*,cout的<<操作符对char*类型有特别的重载,可以输出字符串内容
[/Quote] +
TimZhuFaith
2011-01-28
打赏
举报
回复
学习了[Quote=引用 1 楼 mstlq 的回复:]
string是一个class,不能简单理解成字符数组。
再说,楼主这里的不是string而是char*,cout的<<操作符对char*类型有特别的重载,可以输出字符串内容
[/Quote]
InfidelX
2011-01-28
打赏
举报
回复
[Quote=引用 1 楼 mstlq 的回复:]
string是一个class,不能简单理解成字符数组。
再说,楼主这里的不是string而是char*,cout的<<操作符对char*类型有特别的重载,可以输出字符串内容
[/Quote]
正解。
justkk
2011-01-28
打赏
举报
回复
用printf,没有二义性
昵称很不好取
2011-01-28
打赏
举报
回复
p是char*,而p2是int*类型,因此解释不一样,将p转换为void*类型也会输出一个地址
mstlq
2011-01-28
打赏
举报
回复
string是一个class,不能简单理解成字符数组。
再说,楼主这里的不是string而是char*,cout的<<操作符对char*类型有特别的重载,可以输出字符串内容
C/C++中字符
指针
数组
及
指向
指针
的
指针
的含义
本文详细讲解了C++中字符
指针
数组
和
指向
指针
的
指针
。通过代码示例,分析了
指针
数组
存储字符串起始地址的方式,以及
指向
指针
的
指针
的赋值和内存操作。还说明了函数调用时参数传递和内存地址变化,最后鼓励读者多实践以透彻理解。
[C++]
返回
数组
指针
本文详细解析了在C++中为何不能直接
返回
数组
,而是通过
返回
数组
的
指针
或引用实现。介绍了如何声明和定义
返回
数组
指针
的函数,包括使用类型别名、尾置
返回
类型以及decltype关键字的方法。
cout 输出
string
为 int_8.1 C++
指向
数组
元素的
指针
用
指针
输出
数组
中的10个数
本文围绕C++
指向
数组
元素的
指针
展开。介绍了
数组
元素
指针
即其地址,
指针
变量可
指向
数组
元素,还说明了如何定义
指针
变量并赋值使其
指向
数组
元素,以及通过
指针
引用
数组
元素的方法,最后给出输出
数组
元素的经典案例。
返回
字符串为什么不相同
本文深入探讨了C++中两种不同的字符串
返回
方式:字符
数组
与常量字符串。通过具体代码示例,分析了为什么字符
数组
在函数结束后无法正确访问,而常量字符串则可以。这对于理解C++内存管理及函数
返回
机制至关重要。
C++
返回
数组
指针
本文探讨了在C++中函数无法直接
返回
数组
的原因,并提供了四种解决方案:声明
返回
指针
的函数、使用尾置
返回
类型、使用decltype关键字以及类型别名声明。通过具体示例,深入解析每种方法的应用场景。
C++ 语言
65,211
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章