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]时,会出现乱码。
欢迎萌新!