c++指针数组,int *,char *,string *
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++指针数组,int *,char *,string *,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4606字,纯文字阅读大概需要7分钟。
内容图文
![c++指针数组,int *,char *,string *](/upload/InfoBanner/zyjiaocheng/778/f12be60c9d374fda81a25d99b8da86ae.jpg)
c++指针数组
指针数组≠数组指针,指针数组归根结底是个数组,数组的元素是指针。数组指针归根结底是个指针,指向数组的第一个元素。我们以int型、char型、str型指针数组为例。
整型指针数组
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[5]={1,2,3,5};
int *pa[5];//定义一个指向整型数据的指针数组
for(int i=0;i<5;i++)
{
pa[i]=&a[i];//取数组元素的地址赋给指针
cout<<pa[i]<<setw(7)<<*pa[i]<<endl;
//pa[i]输出数组元素的地址,*pa[i]输出数组元素的值
//setw()标准输出间隔控制函数
}
return 0;
}
需要注意的是,pa[i]输出数组元素的地址,*pa[i]输出数组元素的值。
运行以上程序,结果是:
0x7fff3fcf5350 1
0x7fff3fcf5354 2
0x7fff3fcf5358 3
0x7fff3fcf535c 5
0x7fff3fcf5360 0
数组元素不够时,c++会自动补0,如上述最后一行。
字符型指针数组
字符型和整型是很不一样的
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char b[5]={'h','a','p','p','y'};
char *pb[5];//定义一个指向字符型数据的指针数组
for(int i=0;i<5;i++)
{
pb[i]=&b[i];//取数组元素的地址赋给指针
cout<<setw(7)<<pb[i]<<setw(7)<<*pb[i]<<endl;
}
return 0;
}
运行以上程序的结果为
happy h
appy a
ppy p
py p
y y
可见,pb[i]并没有输出b[i]的地址,而是把该指针所指字符及其后所有字符一并输出,直到遇到\0停止。*pb[i]输出的是具体字符。如果需要输出b[i]每个元素的存储地址,可以用下述指令:
cout<<static_cast<void *>(pb[i])<<endl;
0x7ffceadd9933
0x7ffceadd9934
0x7ffceadd9935
0x7ffceadd9936
0x7ffceadd9937
每个字符的存储地址就会打印出来,并且可以发现,每个字符只需要一个字节的存储空间。
字符串指针数组
可以用指针数组来保存一系列的字符串
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char *pc[5]={"happy","wife","happy","life","haha"};
for(int i=0;i<5;i++)
{
cout<<pc[i]<<setw(7)<<*pc[i]<<setw(13)<<static_cast<void *>(pc[i])<<endl;
}
return 0;
}
运行以上程序,结果如下:
happy h 0x400b77
wife w 0x400b7d
happy h 0x400b77
life l 0x400b82
haha h 0x400b87
可以看出 pc[i] 输出的是每一个字符串的值,因为一个字符只占一个字节,连续保存,自然连续读取。
而 *pc[i] 输出的是每个字符串的首字符; static_cast<void *>(pc[i]) 可以输出每个字符串的首地址。如果要知道这个字符串数组中每个元素的长度(即包含几个字符)和所占内存的大小,可以用下述代码:
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int main()
{
char *pc[5]={"happy","wife","happy","life","haha"};
string str[5];//声明一个字符串数组
for(int i=0;i<5;i++)
{
str[i]=pc[i];//指针的长度不等于字符串长度,把指针所指的空间的内容赋给字符串数组
/*cout<<pc[i]<<setw(7)<<*pc[i]<<setw(13)<<static_cast<void *>(pc[i])<<endl;*/
cout<<str[i].length()<<setw(13)<<sizeof(str[i])<<endl;
//使用<string>库里面的length()函数或size()函数都可以得到字符串长度
//使用sizeof公式可以获取每个字符串所占的内存空间的大小,以我的电脑为例,都是8.
}
return 0;
}
运行以上代码,结果为:
5 8
4 8
5 8
4 8
4 8
直接用string 定义一个字符串数组
string str[5]={"happy","wife","happy","life","haha"};
这样的程序很简单,但是使用指针的话更灵活,以上作为参考。
内容总结
以上是互联网集市为您收集整理的c++指针数组,int *,char *,string *全部内容,希望文章能够帮你解决c++指针数组,int *,char *,string *所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。