const的作用
一、const是什么
const 是一種變量修飾符,修飾緊跟其后的變量,使得該變量為常量值,不能夠被修改。
兩行代碼是一樣的,const修飾n,使得n為一個常量值(不修飾其后的數(shù)據(jù)類型int,而是直接修飾變量n),
所以這種寫法就是錯誤的:
再看下面const與指針結(jié)合的這個例子,能夠大大加深大家都const是一種”變量”修飾符的理解。
const int * p int const *q根據(jù)上面的論述,我們知道const是一種變量修飾符,所以在此const修飾*p、*q,我們都知道*p,*q指的是指針指向的內(nèi)存中的值,加上const修飾符,指的是*p,*q中的值不變,為一個常量。如果想使指針為常量怎么辦呢?可以這樣修飾:
int * const p = &n根據(jù)cosnt修飾緊跟其后的變量定義,在此const修飾p,而p為一個指向變量n地址的int型指針,所以在此p為一個常量指針,即指針指向的地址不能被修改。但是地址中存放的數(shù)據(jù)可以修改。
二、const的作用
1、指明變量或者對象不能夠被修改,保護被修飾的東西,防止被意外修改,增加程序的健壯性。
2、節(jié)省空間,減少不必要的內(nèi)存分配(編譯器通常不會為const修飾的變量分配內(nèi)存空間,而是直接將變量保存在符號表中,使得它成為一個編譯期間的常量,這就避免了對變量的內(nèi)存讀寫操作,效率也是相當?shù)母叩?#xff09;。
三、為什么不使用#define
預處理命令(#define)雖然也可以進行值替換,但是預處理有一點不好即預處理命令只是進行簡單的值替換,并不進行語法的檢查,所以會存在一定的隱患。
文章借鑒了bigloom的博客,想要詳細了解const作用的同學可以看下他的博客:http://blog.csdn.net/bigloomy
總結(jié)
- 上一篇: 字节对齐的意义
- 下一篇: for循环中pairs与ipairs的区