C++構造資料類型----指標,資料類型----

來源:互聯網
上載者:User

C++構造資料類型----指標,資料類型----

 

       C++中提供了用基礎資料型別 (Elementary Data Type)構造的構造資料類型來對複雜的資料進行描述與處理。這些構造資料類型包括枚

舉、數組、結構、聯合、指標、引用。 接下來結合我對指標的認識來說說指標。

 

一、指標的由來

 

     要想瞭解指標,得先看看什麼是地址。

      當定義一個變數後,記憶體中將會劃分出一塊若干個儲存單元組成的地區,用於儲存該該變數的的資料 ,所

示,記憶體裡每個儲存單元都有各自的編號,這個編號就叫做地址。   這些地址也是資料,它們存放在哪裡呢?       在

C++裡,提供了指標類型,當一個變數被定義成一個指標類型後,就可以把地址存入這個變數中了。  這樣我們形象

地把這種可以存放記憶體單元地址的變數叫做指標。

 

二、定義指標

 

       每當儲存一個地址,就得定義一個指標變數。

       定義格式為 資料類型 * 變數名(指標名)

       資料類型是指標指向記憶體單元中的資料的類型,  *是一個表示符號。

 

三、怎麼使用

 

1、初始化

       定義指標後,只是得到了一個能儲存地址的指標,它裡面存放的是一個隨機數,所以在使用指標前,必須將其初

始化。

 

2、賦值

      

       賦值格式可以是   資料類型*指標變數名=初始地址運算式;也可以在定義指標後,指標變數名=地址運算式

 

 

需要注意的地方:

(1)指標是存放地址的,不要將非地址常量或變數以及無意義的地址賦給指標變數。

(2)已經初始化的指標可以給同類型的指標賦值, 類型不一致可以強制轉換。 這個和普通變數賦值的意思差不多。

(3)如果基礎資料型別 (Elementary Data Type)的變數、數組等可以用& 擷取自身地址,賦值給相同類型的指標。

 

三、指標應用

 

1、與字串關係

     字元型指標用於存放字元型變數的地址。

     一個字元型指標儲存了字串的第一個字元的地址,由於這個指標指向了字串首地址,所以其他字元的地址我

們也就可以知道了。

從下面這個例子來看看指標和字串的關係:

       Char *P_str="abcd"  ,指標中存放的是字元'a' 在記憶體中的地址。

 

2、與數組關係

     指標數組

           數組中可以存放字串,數字等元素, 當把指標存到數組中時,這個數組就成了指標數組。  

     基本形式為 類型名* 數組名[ 下標運算式]  例如:int * p_a[5]

 

    數組指標

          數組也是有地址的,指標中存放的是數組地址時,這個指標就成了數組指標。

    基本形式為 類型名(* 指標名)[下標運算式]  例如:int * a_p[5]

 

 

4、與函數關係

     

      作為函數參數

      在這裡,指標作為函數參數是按地址傳遞資料。 當作為函數形參時,指標指向記憶體中的資料直接成了函數的參數。

     

      指標型函數

      有返回值的函數可以返回一個值, 當這個函數被定義返回值類型為指標型時,返回的值是一個地址。 這時這個

函數名就是指標名,我們稱這樣的函數為指標型函數。

    

      指向函數的指標

      函數名是函數在記憶體中的起始地址,調用函數時,就是根據函數名找到函數在記憶體中的地址,然後執行函數。  這

時,如果指標中存放的是函數的首地址,那麼就這個指標就是指向函數的指標了。

 

5、與常量關係

 

     指標常量

     指標名前被const修飾,這時指標中存放的地址就成了一個不可修改的常量。

 

     常量指標

      當const加在資料類型前,這時指標指向的記憶體單元的內容不可以修改。 但可以修改指標中存放的地址。

 

     常指標常量

     當資料類型前和指標名前都加const後, 很顯然,以上兩個合并一下,既不能修改指標中存放的地址,也不能修改指標指向的記憶體單元中的內容。

 

四、小結

       指標這一塊的內容我總結的還不是很全面,還有很多東西沒有在這裡寫,指標在C++程式中扮演著非常重要重要的角色,如果不能深刻理解指標,學習C++是很困難的,是很容易產生困惑的。我也是初學,可能有些地方理解的不對,還望大家斧正。 也歡迎大家和我交流關於指標中的問題!

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.