const指標總結,const指標

來源:互聯網
上載者:User

const指標總結,const指標

const 總結:
如果關鍵字const出現在星號左邊,表示被指物是常量;即不能通過指標修改變數的值。
如果關鍵字const出現在星號右邊,表示指標自身是常量;即不能改變指標的指向。

如果被指物是常量,會有兩種形式:

int a=3,b=4;

const int* p=&a;

int const *p=&a;

這兩種形式等效。

具體舉例見:const指標
const指標問題

對於樓上的回答,我不贊同。char* const str定義了一個指向字串的常量指標,該指標的值是不可以變化的(就是str不能再被賦值),但我們可以改變該指標所指向的變數的值,也就是*str.而樓主問題一的報錯,不是指標問題,而是編譯器把char *p="abcd"中的串"abcd"放到常量區,再把地址給p,是不允許修改的
 
電腦C++中的const的用法與作用總結

C++中const用法總結

1. const常量,如const int max = 100;
優點:const常量有資料類型,而宏常量沒有資料類型。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。

2. const 修飾類的資料成員。 const資料成員只在某個物件存留期內是常量,而對於整個類而言卻是可變的。因為類可以建立多個對象,不同的對象其const資料成員的值可以不同。所以不能在類聲明中初始化const資料成員,因為類的對象未被建立時,編譯器不知道const 資料成員的值是什麼。 const資料成員的初始化只能在類的建構函式的初始化表中進行。

3. const修飾指標的情況,見下式:
const int* a = & [1]
int const *a = & [2]
int* const a = & [3]
const int* const a = & [4]
可以參考《Effective c++》Item21上的做法,如果const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量。因此,[1]和[2]的情況相同,都是指標所指向的內容為常量,這種情況下不允許對內容變更操作,如不能*a = 3 ;[3]為指標本身是常量,而指標所指向的內容不是常量,這種情況下不能對指標本身變更操作,如a++是錯誤的;[4]為指標本身和指向的內容均為常量。

4. const的初始化
先看一下const變數初始化的情況
1) 非指標const常量初始化的情況:A b;
const A a = b;
2) 指標const常量初始化的情況:
A* d = new A();
const A* c = d;
或者:const A* c = new A();
3)引用const常量初始化的情況:
A f;
const A& e = f; // 這樣作e只能訪問聲明為const的函數,而不能訪問一般的成員函數;

5. const在函式宣告中的應用 在函式宣告中,const 可以修飾函數的傳回值,或某個參數;對於成員函數,還可以修飾是整個函數。1) 修飾參數的const,如 void fun0(const A* a ); void fun1(const A& a);
調用函數的時候,用相應的變數初始化const常量,則在函數體中,按照const所修飾的部分進行常量化,如形參為const A* a,則不能對傳遞進來的指標的內容進行改變,保護了原指標所指向的內容;如形參為const A& a,則不能對傳遞進來的引用對象進行改變,保護了原對象的屬性。
[注意]:參數const通常用於參數為指標或引用的情況,且只能修飾輸入參數;若輸入參數採用“值傳遞”方式,由於函數將自動產生臨時變數用於複製該參數,該參數本就不需要保護,所以不用const修飾。
[總結]對於非內部資料類型的輸入參數,應該將“值傳遞”的方式改為“const引用傳遞”,目的是為了提......餘下全文>>
 

聯繫我們

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