第四章 陣列和指標

2021-06-08 22:38:23 字數 1861 閱讀 9726

4.1、陣列

1、陣列的初始化:

在函式體外定義的內建陣列,都初始化為0;在函式體內的內建陣列,均無初始化; 顯示顯示初始化則可不必制定陣列的維數

初始化如果元素為類型別,則自動的條用該類預設的建構函式

2、特殊字元陣列

char ca="c++";      //會自動的在c++後新增乙個空的字元'\o',而char ca2=;ca2的長度則為3.

3、不允許陣列想vector那樣直接用乙個陣列初始化另乙個陣列。陣列用下標取值。

4.2、指標

1、指標儲存的是另乙個物件的位址,&是取位址符號,如定義乙個指標 string s="hello";   string *sp=&s;   cout<<&sp;

解操作:  int a = ;   int *ap = a;       cout<<*ap; 

現在程式衝使用vector型別和迭代器代替陣列和指標,使用string型別代替c風格字串

2、指標初始化

對指標初始化只能使用以下四種型別的值:

1)0值常量表示式,也可以是

2)型別匹配的物件的位址

4)同型別的有效指標

void指標  void*可以儲存任何物件的位址,不允許使用void*指標所指物件的位址

3、指標的操作

生成左值的解引用操作*sp,給指標直接賦值即可改變指標的值,如   *sp = "hello" 指標所指物件的值發生了改變,

指標和引用的區別

a:引用定義時必須初始化,指標則不必

b:賦值是,對引用的賦值,改變的是引用物件的值,對指標的賦值,改變的是指標所指的物件

如: int i1=1.i2=2;              int *p1=&i1,*p2=&i2;        p1 = p2;此時p1指的是p2

int i1 = 12,i2=20;    int &r1 = i1, &r2 = i2;      ri=r2;     r1還是i1的引用,但i1的值變為20

用指標訪問陣列元素,  c++允許計算陣列或者物件的超出末端的位址,但不允許對位址進行解操作。

指標是陣列的迭代器

4、指標和const限定符

有兩種型別

const int *sp =&i :  表示i的值不能被改變

int *const sp =&1 :表示sp指向i,不能被改變指向

還有指向const物件的const指標

typedef和指標:    如typedef  string  *pstring      const    pstring   sp是那種型別的指標,應該是   string *const sp這個型別的

4.3、c風格字串

1、c風格字串以null結尾

const  char *c = "hell world";

while(*c);ca就沒有null長度為2

2、動態的建立陣列

動態的建立陣列用new,存放位置在堆或者自由儲存區(c++中把記憶體分為全域性靜態區、堆、棧、自由儲存區、常量區)

int *pa = new int[10];              //沒有初始化              

int *pa = new int [20]();     //全部初始化為0

對於new動態分配的空間,要用delete刪除,   但是陣列的刪除一定要在前面加,   去 delete   pa;不然將導致程式在執行時出錯。

4.4、新舊**的相容

char  *ch = st.c_str();  返回乙個c風格字串

其中 c_str返回的陣列應不一定是有效的,接下來對st2的操作很有可能會改變st2的值,使得返回的陣列失效。此時應該是複製c_str函式的返回陣列                           

第四章 陣列和指標

由於陣列和指標這部分知識比較深奧,本菜鳥決定將c和c 的指標部分的知識點全歸到c語言部分來整理,所以這裡就只總結一些題目。下列陣列的值是什麼?string sa 10 int ia 10 int main 解答 sa 和sa2 為元素型別為string 的陣列,自動呼叫string 類的預設建構函式...

第四章 陣列和指標

陣列 首先陣列的初始化不允許直接複製和賦值,陣列的元素的型別是size t型別,可以通過for size t ix 0 ix!array size ix 指標 指標的定義 int p 注意 在使用指標之前必須要初始化指標。並且對指標初始化的值應該使用如下四種值 1 0值常量表示式。例如和疑惑的0值得...

C Primer 第四章 陣列和指標

4.2指標的引入 1.指標變數的定義 string pstring 語句把pstring定義為乙個指向string型別物件的指標變數。或者也可以如下定義 string ps 如果需要再乙個宣告語句中定義兩個指標,必須在每個變數識別符號前再加符號 宣告 string ps1,ps2 4.指標可能的取值...