c++ 數組皇冠和體育平臺出租指針(vector和叠代器的低級復合類型)
1.數組的缺點:數組的長度是固定的,無法改變大小;無法知道數組的大小;數組也不提供push_back等類型的操作,用下標進行操作有時候很麻煩;
2.數組的長度:必須是常量,不可以用變量寫入;常量必須是定義時就是常量,即使換算得到的也不可以用來定義數組;
3.數組的初始化:全局數組會自動初始化;局部數組不會自動初始化。
eg: char str1[]={‘c‘,‘+‘,‘+‘};
char str2[]={‘c‘,‘+‘,‘+‘,‘/0‘};
char str3[]="c++";
4.數組的操作:(保證數組下標不會越界)
數組下標的定義:size_t
數組的賦值:每一個數據分別拷貝,不能直接對數組進行操作;
5.盡量使用vector(動態數組)來代替數組;
二、指針
1.指針的定義和初始化:
eg: sp=&s;//sp為指針,代表sp為指針,s為數組,&為取地址符(sp代表的是s的地址,*sp為sp地址的內容)
註:可以靠近變量或者類型寫均可,都表示這是一個指針;靠近類型時,定義的指針僅僅是靠近它的變量,其余均為變量;指針一般都要進行初始化;指針可以等於一個常量,但是不能等於變量,變量前必須要加取地址符(*sp只能等於0或者&s或者NULL);指針只能指向同類型的變量地址;
int ival=1024;
int ip2=&ival;//ip2中存的是ival的地址
ip=ip2;//ip和ip2均指向ival
2.萬能指針:void *pv=&s;//可以指向任何類型的對象,
註:運用的範圍較為窄小,僅僅在幾種特殊情況下進行使用:與另一個指針進行比較;向函數傳遞void指針或者從函數中返回void指針 ;向另外一個void*指針賦值。
3.指針和引用:引用(&s=sp)
區別:(1)指針可以先定義,之後在進行初始化;引用必須在聲明時進行初始化;
(2)指針通過賦值可以改變其指向的對象;但是引用不可更改,聲明初始化以後就不能進行改變;
4.指向指針的指針:int **pi=&ip2;
三、使用指針訪問數組
1.示例:
int ia[]={2,4,5,6,87};
int *ip=ia;
cout << ia <<endl;
cout<<ip<<endl;
ip=&ia[4];
cout << *ip <<endl;
2.指針減法:兩指針相減,減法得到的是兩指針之間的距離;
eg: ptrdiff_t n=ip2-ip;
cout << n<< endl;
3.int laest=*(ip+4); //取出ip+4指向的內容
c++ 數組皇冠和體育平臺出租指針(vector和叠代器的低級復合類型)