社区
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返回的是一个地址
...全文
203
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
指针
---
指针
数组
与
数组
指针
数组
指针
是
指向
数组
的
指针
(本质上是一个
指针
)与
指针
数组
不同,
数组
指针
指向
的是一个整个
数组
,而不是
数组
的单个元素。用例:声明一个
指向
包含 5 个int元素的
数组
的
指针
// ptr 是一个
指向
数组
的
指针
// 通过
数组
指针
访问
数组
元素// 也可以直接通过
数组
指针
遍历
数组
i < 3;:声明了一个
数组
指针
ptr,它
指向
一个包含 3 个int元素的
数组
。(*ptr)[i]:通过解引用
数组
指针
ptr来访问
数组
元素。
数组
指针
:
指向
整个
数组
。例如,
C/C++中字符
指针
数组
及
指向
指针
的
指针
的含义
就
指向
指针
的
指针
,很早以前在说
指针
的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说
指向
指针
的
指针
。 先看下面的代码,注意看代码中的注解:#include iostream> #include
string
> using namespace std; void print_char(char* array[],int len);//函数原形声明
[C++]
返回
数组
指针
数组
无法被拷贝,所以函数无法
返回
一个
数组
。但是,函数可以
返回
数组
的
指针
或引用。下面是
返回
数组
的
指针
或引用的方式: typedef int arrT[10]; //arrT是一个类型别名,表示的类型是含有10个整数的
数组
using arrT=int[10]; //arrT的等价声明 arrT* func(int i); // fun...
cout 输出
string
为 int_8.1 C++
指向
数组
元素的
指针
用
指针
输出
数组
中的10个数
C++
指向
数组
元素的
指针
在C++中,一个变量有地址,一个
数组
包含若干元素,每个
数组
元素都在内存中占用存储单元,它们都有相应的地址;
指针
变量既然可以
指向
变量,也可以
指向
数组
元素,所谓
数组
元素的
指针
就是
数组
元素的地址。定义一个整型
数组
array,它有10个元素:int array[10]; 定义一个基类型为整型的
指针
变量p:int *p; 将元素array[0]的地址赋给
指针
变量p,使p
指向
array...
返回
字符串为什么不相同
在今天的课程之中终于解决一个在2018年学习C++的时候都没有明白的知识点 #include <stdio.h> char* txet1() { char str[] = "Hello World"; return str; } char* txet2() { char *str = "Hello World"; return str; } int main() { printf("%s\n", txet1()); printf("%s\n", txet2()); return
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章