【筆記】C++ 指標和引用的使用

來源:互聯網
上載者:User

1.1 指標的概念

  聲明任何一個變數,系統都會為其分配一定大小的記憶體,訪問變數實際上就是訪問其所佔據的記憶體空間。

1.2 指標變數的聲明、初始化和訪問

1.2.1 聲明:     資料類型 *變數名

1.2.2 初始化:   3種方式  

(1)初始化為NULL或0:表示指標變數指向的是一片無效的不可訪問的記憶體;

  如: int *p= NULL;(NULL必須大寫

(2)初始化為已聲明變數的地址;

  如:  int a;

     int *p=&a;   (指標變數的宣告類型與其所指向的變數的類型必須一致,否則就要給出顯式的強制類型轉換)

(3)初始化為某一動態分配記憶體空間的地址。

1.2.3 指標變數的訪問

  可以通過該指標變數訪問記憶體中的資料,其訪問形式為:

  *指標變數名

1.3 指標和數組

1.3.1 用指標操作一維數組

要點:定義相同類型的數組和指標變數,將指標變數指向數組首地址。

如:

1 int a[]={1,2},b[]={3,4}
2  int *p=NULL;
3 p=a;
4
5 p=&b[0];

1.3.2 用指標操作二維數組

(1)使用指向行的指標變數操作二維數組

聲明形式為:  資料類型 (*指標變數名)[行長度];

如:

1 int a[][2]={1,2},b[][2]={3,4};
2 int (*p)[2]=NULL;
3
4 p=a;
5 cout<<p[0][0]<<p[0][1];
6
7 p=&b[0];
8 cout<<p[0][0]<<p[0][1];

(2)使用指標變數操作二維數組

如:

1 int a[][2]={1,2,3,4},b[][2]={4,3,2,1};
2 int *p=NULL;
3
4 p=a[0];
5 cout<<p[0]<<p[1];
6
7 p=&b[0][0];
8 cout<<p[0]<<p[1];

註:第四行和第七行等價,都表示二維數組第一個元素的首地址。

1.4 指向指標的指標

二級指標變數的聲明方式為:  資料類型 **變數名;

。。。

1.5 const指標

  const指標分為常量指標和指標常量。

1.5.1 常量指標

  聲明形式:  const 資料類型 *變數名;

  常量指標所指向的記憶體位址可以改變,但通過常量指標只能從記憶體讀取資料,但不能修改記憶體中的資料。

1.5.2 指標常量

  聲明形式:   資料類型 *const 變數名;

  指標常量是一個常量而不是變數,因此指標常量所指向的記憶體是固定的,不能改變的,但可以修改記憶體中的資料。

1.6 堆記憶體配置

  堆記憶體配置就是動態記憶體分配,指在程式運行時從堆中為指標變數申請實際需要的記憶體空間,當其不再使用時,要及時釋放。

  C++中,使用newdelete這兩個關鍵字完成堆記憶體配置和釋放的操作。

說明:

(1)使用new分配的記憶體必須使用delete釋放,否則會造成記憶體泄露,導致電腦處理速度變慢。

(2)在使用new分配堆記憶體時要區分[ ]和()。[ ]指定元素數目,()指定記憶體初值。如:

1 int a=3;
2 int *p1 = new int[a]; //分配了3個int型大小的記憶體
3 int *p2 = new int(a); //分配了1個int型大小的記憶體,且初值為3.

(3)在分配記憶體時為多個元素分配了記憶體,那麼在使用delete釋放記憶體時必須加[ ].

(4)必須使用指標儲存分配的記憶體首地址,這是由於delete鬚根據首地址進行記憶體釋放。

(5)如果分配是一個記憶體,釋放時可以將[ ]去掉。

 1.7 引用

 1.7.1 引用的概念

  引用就是別名。

1.7.2 引用的聲明

  聲明形式:  資料類型 &引用名 = 變數名   其中,“&”是引用運算子。  其他用途:位與運算子、取地址運算子。

 1.73 const引用

  cosnt引用沒有常量引用和引用常量之分,兩種聲明形式:

  const  資料類型 &引用名 =  變數名或常量     或者        資料類型 const  &引用名 =  變數名或常量

   const引用只能訪問所引用對象的值,而不能修改所引用對象的值。

 好了,今天的學習就到這裡了。

參考:

物件導向程式設計----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.