1. 程式人生 > >幾種不同型別陣列與指標的關係

幾種不同型別陣列與指標的關係

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]時,會出現亂碼。

歡迎萌新!