C++數組和指針—vector和疊代器的低級複合類型

C++數組和指針—vector和迭代器的低級複合類型

一、數組

1.數組的缺點:數組的長度是固定的,無法改變大小;無法知道數組的大小;數組也不提供push_back等類型的操作,用下標進行操作有時候很麻煩;

2.數組的長度:必須是常量,不可以用變量寫入;常量必須是定義時就是常量,即使換算得到的也不可以用來定義數組;

3.數組的初始化:全局數組會自動初始化;局部數組不會自動初始化。

eg: char str1[]={'c','+','+'};

char str2[]={'c','+','+','/0'};

char str3[]="c++";

4.數組的操作:(保證數組下標不會越界)

數組下標的定義:size_t

數組的賦值:每一個數據分別拷貝,不能直接對數組進行操作;

5.儘量使用vector(動態數組)來代替數組;

C++數組和指針—vector和迭代器的低級複合類型

二、指針

1.指針的定義和初始化:

eg: *sp=&s;//sp為指針,*代表sp為指針,s為數組,&為取地址符(sp代表的是s的地址,*sp為sp地址的內容)

注:*可以靠近變量或者類型寫均可,都表示這是一個指針;*靠近類型時,定義的指針僅僅是靠近它的變量,其餘均為變量;指針一般都要進行初始化;指針可以等於一個常量,但是不能等於變量,變量前必須要加取地址符(*sp只能等於0或者&s或者NULL);指針只能指向同類型的變量地址;

int ival=1024;

int *ip=0;//表示指針不指向任何變量

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 <

cout<

ip=&ia[4];

cout << *ip <

2.指針減法:兩指針相減,減法得到的是兩指針之間的距離;

eg:ptrdiff_t n=ip2-ip;

cout << n<< endl;

3.int laest=*(ip+4); //取出ip+4指向的內容

最後祝所有程序員都能夠走上人生巔峰,讓代碼將夢想照進現實。如果大家對於學習C語言的學習方法,學習路線還有以後發展問題有任何疑問可以隨時問我,工作不忙的時候希望可以給大家解惑。關注我的頭條號,私信給我【C語言】我會發你係統學習資料以及交流學習的地址。


分享到:


相關文章: