C語言的const和CPlusPlus的const__C語言

來源:互聯網
上載者:User

(不知道為啥標題寫C++老是顯示不出來,應該是CSDN新出的MarkDown編輯器bug)C++的const和C語言的#define都可以用來定義常量,二者是有區別的,const是有資料類型的常量,而宏常量沒有,編譯器可以對前者進行靜態型別安全檢查,對後者僅是字元替換,沒有型別安全檢查。
而C語言中的const與C++也有很大的不同,在C語言中用const修飾的變數仍是一個變數,表示這個變數是唯讀,不可顯示地更改,而在C++中用const修飾過後,就變成常量了。例如下面的代碼:

const int n=10;int a[n];

這兩行代碼在C語言中會報錯,因為聲明數組時的數組長度必須是常量,而這裡面的n在C語言中是變數。而在C++中用const修飾過後,n就已經等同於一個常量了,因此可以通過。
再看下面的代碼:

const int a=3;int* p=&a;*p=4;

這種情況在C++中是不允許的,原因在於a用const修飾後,已經成為常量了,因此是不允許被修改的,無論是顯式的更改a的值或是通過其它方法修改它的值都是不允許的。

聯繫我們

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