几种不同类型数组与指针的关系

1)整形数组与指针
int a[5]={1,2,3,4,5};
int *p=a;//其实指针p也相当于是数组名,p[i]=a[i];指向数组首地址,即a[0]地址;
cout<<p;即输出数组a的首地址;(与cout<<&a[0]等价 )
cout<<p;即输出a[0];
!!!!cout<<&p;输出的是指针p的地址;
//指针与数组类似,数组可以表达为是一种特殊类型的指针。
2)字符型数组与指针;
(1)单字符 char型
char型变量对应单字符 ,正常情况下:
char a[]=“yinjun”;//a为一个字符型数组;char a[6]="yinjun"与之等价。
char * p=a;p指向‘y’,储存y的地址;但是cout<<p或者cout<<&p[0];输出的却不是地址,而是整个字符串;

cout<< * p或者p[0]都输出y;同样cout<<&p输出的是p的地址;
特殊情况:
直接写 char *p=”yinjun";与上述p含义相同

(2)字符串 string 型
string a=“yinjun”;
string *p=&a此时cout<<p或者&p[0];输出字符串首地址;//p指向字符串。
而cout<<*p时,输出整个字符串;
在这里插入图片描述

               cout<<p[0]时,也输出字符串,但cout<<p[1]时,会出现乱码。

欢迎萌新!

猜你喜欢

转载自blog.csdn.net/qq_44054750/article/details/84963582