字符串的输出

本文深入探讨了C++中指针与数组的操作,包括字符数组与字符串指针的输出区别,以及如何通过指针访问数组元素。通过具体代码示例,解释了cout在输出字符串指针和整形指针时的不同行为,以及如何正确输出指针地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

char a[6] = {'h','a','p','p','y','\0'};
cout<<"a="<<a<<endl;
cout<<"*a="<<*a<<endl;

char ac[] = "happy";
cout<<"ac="<<ac<<endl;
cout<<"*ac="<<*ac<<endl;

char *p = "china";
cout<<"p="<<p<<endl;
cout<<"*p="<<*p<<endl;

string *q = new string("china");
cout<<"q="<<q<<endl;
cout<<"*q="<<*q<<endl;

输出为:

a=happy
*a=h
ac=happy
*ac=h
p=china
*p=c
q=0xb819f0
*q=china

再试试整形,

 int ab[10] = {1,2,3,6,7};
 cout<<"ab="<<ab<<endl;
 cout<<"*ab="<<*ab<<endl;

 int *pi = new int(10);
 cout<<"pi="<<pi<<endl;
 cout<<"*pi="<<*pi<<endl;

 int *pp = new int[3]{1,2,3};
 cout<<"pp="<<pp<<endl;
 cout<<"*pp="<<*pp<<endl;

输出为

ab=0x72fdf0
*ab=1
pi=0xb814f0
*pi=10
pp=0xb81510
*pp=1

特别要注意cout在输出的对象为字符串指针的时候,cout<<p输出的就是字符串,而不是地址,cout<<*p就是当前的那个字符,
若要输出指针存储的地址要使用(void*)p 。 因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表示数组的大小.所以cout函数没法知道该输出多少个元素。而字符串则不同,它有一个'\0'用来表示字符串结束,cout看到'\0'就知道输出结束了。


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值