const在c语言中作用,在C语言中const作用全面总结.doc
在C語言中const作用全面總結
C++中的const關鍵字的用法非常靈活,而使用const將大大改善程序的健壯性,本人根據各方面查到的資料進行總結如下,期望對朋友們有所幫助。Const 是C++中常用的類型修飾符,常類型是指使用類型修飾符const說明的類型,常類型的變量或對象的值是不能被更新的。?一、Const作用 如下表所示:No.作用說明參考代碼1可以定義const常量 const int Max = 100; 2便于進行類型檢查 const常量有數據類型,而宏常量沒有數據類型。編譯器可以對前者進行類型安全檢查,而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換時可能會產生意料不到的錯誤void f(const int i) { .........} //對傳入的參數進行類型檢查,不匹配進行提示3可以保護被修飾的東西防止意外的修改,增強程序的健壯性。void f(const int i) { i=10;//error! } //如果在函數體內修改了i,編譯器就會報錯4可以很方便地進行參數的調整和修改同宏定義一樣,可以做到不變則已,一變都變 5為函數重載提供了一個參考 class A{ ...... void f(int i) {......} //一個函數 void f(int i) const {......} //上一個函數的重載 ......};6可以節省空間,避免不必要的內存分配const定義常量從匯編的角度來看,只是給出了對應的內存地址,而不是象#define一樣給出的是立即數,所以,const定義的常量在程序運行過程中只有一份拷貝,而#define定義的常量在內存中有若干個拷貝#define PI 3.14159 //常量宏const doulbe Pi=3.14159; //此時并未將Pi放入ROM中 ......double i=Pi; //此時為Pi分配內存,以后不再分配!double I=PI; //編譯期間進行宏替換,分配內存double j=Pi; //沒有內存分配double J=PI; //再進行宏替換,又一次分配內存!7 提高了效率編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高 ?二、Const的使用1、定義常量(1)const修飾變量,以下兩種定義形式在本質上是一樣的。它的含義是:const修飾的類型為TYPE的變量value是不可變的。 TYPE const ValueName = value; const TYPE ValueName = value;(2)將const改為外部連接,作用于擴大至全局,編譯時會分配內存,并且可以不進行初始化,僅僅作為聲明,編譯器認為在程序其他地方進行了定義. extend const int ValueName = value; 2、指針使用CONST(1)指針本身是常量不可變 (char*) const pContent; const (char*) pContent; (2)指針所指向的內容是常量不可變 const (char) *pContent; (char) const *pContent; (3)兩者都不可變 const char* const pContent; (4)還有其中區別方法,沿著*號劃一條線:如果const位于*的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量;如果const位于*的右側,const就是修飾指針本身,即指針本身是常量。?3、函數中使用CONST(1)const修飾函數參數a.傳遞過來的參數在函數內不可以改變(無意義,因為Var本身就是形參)void function(const int Var); b.參數指針所指內容為常量不可變void function(const char* Var); c.參數指針本身為常量不可變(也無意義,因為char* Var也是形參)void function(char* const Var); d.參數為引用,為了增加效率同時防止修改。修飾引用參數時:void function(const Class& Var); //引用參數在函數內不可以改變void function(const TYPE& Var
總結
以上是生活随笔為你收集整理的const在c语言中作用,在C语言中const作用全面总结.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux环境下安装wiringpi库
- 下一篇: 项目结构_组织结构对项目影响系列课程--