第四章 陣列和指標

2021-07-04 17:49:32 字數 1080 閱讀 9373

陣列:首先陣列的初始化不允許直接複製和賦值,陣列的元素的型別是size_t型別,可以通過for(size_t ix=0;ix!=array_size;++ix)。

指標:指標的定義: int *p;注意:在使用指標之前必須要初始化指標。並且對指標初始化的值應該使用如下四種值:1、0值常量表示式。例如和疑惑的0值得const物件和字面值常量0。2、型別匹配的物件的位址。3、另乙個物件之後的下一位址。4、同型別的另乙個有效指標。

聽人家說指標的操作是最難的,但我對指標的理解就是如果要用到指標的話,首先你要必須要明確地知道對應的是變數位址還是變數值。比如如果有乙個容器vector,那麼你必須要清楚這個容器中存放的是位址還是變數值,明確了這一點之後,如果想要知道這個容器裡面到底是個什麼東西就可以通過指標來獲取,如果容器裡面存放的是位址,那麼你要知道這個位址對應的變數是什麼通過**iter來獲取,如果存放的就是變數值,那麼只要通過*iter就可以獲取。換句話說要明白*p和p的區別:*p指的是對應的變數值,p則是對應的存放變數的位址。

指標(*p)和引用(&p)的比較:引用是引用物件的值,如果修改了引用的值,相應的物件的值也隨之改變。而指標式指向物件的位址,如果改變了指標只是改變了它指向的物件而已。原來的物件並不會改變。(說到這裡其實我們經常說的指標就是p而不是*p(它是指標變數的值),只是在定義的時候定義了 int *p而已。你如果修改指標就是修改p,而不是*p。個人理解不知道是不是有誤?)

跟指標聯絡在一起的主要是new和delete的操作:這兩個操作是c++相對於c來講新增加的內容。具體的實現通過乙個列子來說明:int *p=new int[10];這是定義乙個int陣列。並且返回乙個指向陣列第乙個元素的指標p(就是上面所講的第乙個元素相應的位址)。還可以定義單個的物件如:int *p=new int;並且返回乙個int型物件的指標p。在這裡定義單個物件的時候有乙個初始化的問題。也就是說可以定義的時候初始化,如:int *p=new int(10);(注意這裡的初始化是圓括號而不是方括號,方括號表示陣列)。那麼建立了乙個動態陣列,如何來操作這個陣列呢? 如:int *p=new int[n];for(int* q=p;q!=p+n;++q)。最後就是釋放記憶體:利用delete來釋放。釋放陣列:delete p;中間的必不可少。釋放單個物件:delete p。

第四章 陣列和指標

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

第四章 陣列和指標

4.1 陣列 1 陣列的初始化 在函式體外定義的內建陣列,都初始化為0 在函式體內的內建陣列,均無初始化 顯示顯示初始化則可不必制定陣列的維數 初始化如果元素為類型別,則自動的條用該類預設的建構函式 2 特殊字元陣列 char ca c 會自動的在c 後新增乙個空的字元 o 而char ca2 ca...

C Primer 第四章 陣列和指標

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