【C++自我精講】基礎系列一 指標與引用

來源:互聯網
上載者:User
【C++自我精講】基礎系列一 指標與引用0 前言

指標、引用、指標與引用區別。

1 指標

變數:代碼中常常通過定義變數來申請並命名儲存空間,並通過變數的名字來使用這段儲存空間。

//變數int nNum;    //聲明名字為nNum的int型儲存空間nNum = 100;  //nNum儲存值100nNum = 200;  //改變nNum儲存值200

 指標:又叫一級指標,用來指示一個記憶體位址的變數。對於一個類型T(int、char、folat...),T*就是指向T的指標類型,一個T*類型的變數儲存了一個T對象的地址。

//指標int *pNum;   //定義指標pNumpNum = &nNum;//pNum指向變數nNum在記憶體中的地址,而不是變數本身的值200(取地址運算子&:取變數的地址。如:&nNum為取變數nNum的地址)int nNum1 = *pNum; //取指標pNum指向儲存空間值200(指標運算子*:從地址中取資料。如:*pNum為從地址pNum中取值)

 指標變數:指標是地址,指標變數是存放地址的變數。

//指標變數int *pVar = pNum;//等同int *pVar = &nNum;

二級指標:指向指標變數的指標。

//二級指標int **ppNum = pVar;//

 用一張圖表示下二級指標:

 

C是常量;B是一級指標,B的值(即C的地址)是一級指標資料;A是二級指標,A的值(即B的地址)是二級指標資料。

null 指標:不指向任何對象,指標變數值為NULL。指標為空白的判斷常常為了避免指標變數的非法使用。

int *pNum = NULL;...if(NULL != pNum){    ...}

 函數指標:是指向函數的指標變數。可用該指標變數調用函數,就如同用指標變數引用其他類型變數一樣。

 函數指標聲明格式:類型說明符 (*函數名)(參數)  

//函數minint min(int x,int y);//函數maxint max(int x,int y);//函數指標int (*pFun)(int, int);//使用函數指標調用函數int nNumMin = 1;int nNumMax = 100;int nMin = 0;int nMax = 0;pFun = min;nMin = (*pFun)(nNumMin,nNumMax);//nMin = 1;pFun = max;nMax = (*pFun)(nNumMin,nNumMax);//nMax = 100;

指標函數:函數的傳回值類型是一個指標類型,本質是一個函數。

指標函式宣告格式:類型說明符 *函數名(參數)  或 類型說明符 *(函數名(參數))

int *pfun(int, int);//pfun是一個指向傳回值為int的函數的指標
2 引用

引用:是對象的別名,對引用的操作與對變數的直接操作一樣。其主要用於函數參數和傳回值類型,T&表示T類型的引用。引用不是資料類型,引用本身不佔儲存空間。

int i = 100;int &j = i;//&為標識作用,非取地址
3 指標與引用區別

1)指標可以指向空值,引用不能。如果一個變數指向另一個對象,它可能為空白,應該用指標;它不允許為空白,應該使用引用。

2)指標可以改變指向,引用不可以改變指向。引用初始化以後不能被改變,指標可以改變所指的對象。

3)指標的大小是固定位元組(4個位元組),引用的大小是所指變數的大小。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.