bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C語言const詳解-創新互聯

目錄

創新互聯長期為上千余家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為盂縣企業提供專業的成都網站制作、成都網站設計、外貿營銷網站建設盂縣網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。

一、什么是const

二、使用const的優點

三、const的用法

(1)修飾局部變量

(2)常量指針與指針常量

三、修飾函數的參數

(1)防止修改指針指向的內容

(2)防止修改指針所指向的地址

四、修飾函數的返回值

五、修飾全局變量

六、簡單筆試題


一、什么是const

如果我們想定義這樣一種變量,使它的值不能被改變,在整個作用域中都保持固定,那可以使用const關鍵字對變量加以限定。

不過要注意,被const所修飾的變量,其值是可以通過指針被修改的!

有一種說法是const定義的是變量為常變量。

被const修飾的是變量,而修飾之后又相當于常量,但還有變量的屬性,所以叫常變量。

其用法非常簡單,只需在定義變量時前加const即可。

const既可以加在變量前、類型后,又可以加在類型前。如:

const int i = 0;
int const a = 0;

這兩者是等價的。

二、使用const的優點

1、預編譯指令僅是對值的簡單替換,不能對類型進行檢查,相比之下,被const修飾的變量有自己的類型;

2、const可以保護被修飾的變量,防止意外修改,增強程序的健壯性;

3、可以避免不必要的內存分配,編譯器通常不為被const修飾的變量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,它的效率很高。

4、可以進行類型檢查

三、const的用法 (1)修飾局部變量
const char* str="fdsafdsa";

如果沒有const的修飾,我們可能會在后面有意無意的寫str[4]=’x’這樣的語句,這樣會導致對只讀內存區域的賦值,然后程序會立刻異常終止。有了const,這個錯誤就能在程序被編譯的時候就立即檢查出來,這就是const的好處。讓邏輯錯誤在編譯期被發現。

(2)常量指針與指針常量

常量指針是指針指向的內容是常量,可以有以下兩種定義方式。

const int* n;
int const* n;

可以發現,無論是在int前還是后,它們均位于*之前。

警告:

1.常量指針只是不能通過指針改變變量的值,還可以以其他方式來改變變量的值。

int a=5;
const int* n=&a;
a=6;

2.指針本身可以被改變!常量指針可以指向其他的地址。

int a=5;
int b=6;
const int* n=&a;
n=&b;

3.指針常量是指指針本身是個常量,不能指向其他地址。

int*const n;

4.指針常量指向的地址不能改變,但是地址中保存的數值是可以改變的,可以通過其他指向該地址的指針來修改。

int a=5;
int*p=&a;
int* const n=&a;
*p=8;

區分常量指針和指針常量的關鍵就在于*的位置,以*為分界線,如果const在星號的左邊,則為常量指針,如果const在星號的右邊則為指針常量。

5.指向常量的常指針是以上兩種的結合,指針指向的位置不能改變并且也不能通過這個指針改變變量的值,但是依然可以通過其他的普通指針改變變量的值。

const int* const p;
三、修飾函數的參數 (1)防止修改指針指向的內容
void StringCopy(char*strDestination, const char*strSource);

其中strSource是輸入參數,strDestination是輸出參數。給strSource加上const修飾后,如果函數體內的語句試圖通過解引用的方式改動strSource的內容,編譯器將指出錯誤。

(2)防止修改指針所指向的地址
void swap ( int* const p1 , int* const p2 );

指針p1和指針p2指向的地址都不能修改。

四、修飾函數的返回值

如果給以“指針傳遞”方式的函數返回值加 const 修飾,那么函數返回值(即指針)的內容不能被修改,該返回值只能被賦給加const 修飾的同類型指針。

例如函數

const char* GetString(void);

用法是

const char*str = GetString();
五、修飾全局變量

全局變量的作用域是整個文件,我們應該盡量避免使用全局變量,因為一旦有一個函數改變了全局變量的值,它也會影響到其他引用這個變量的函數,導致除了bug后很難發現,如果一定要用全局變量,我們應該盡量的使用const修飾符進行修飾,這樣方式不必要的以為修改,使用的方法與局部變量是相同的。

六、簡單筆試題

有關const的面試題、筆試題太多了,很精彩,可以自行查找。這里僅用2015年360的筆試題講解。

??途W鏈接:語言中哪一種形式聲明了一個指向char類型變量的指針p,p的__牛客網 (nowcoder.com)

語言中哪一種形式聲明了一個指向char類型變量的指針p,p的值不可修改,但p指向的變量值可修改?

A.const char *p
B.char const *p
C.char*const p
D.const char *const p

【正確答案】C
【解析】const 限定一個數據為只讀屬性。
1.const char p; 限定變量 p 為只讀。
2.const char *p; p 為一個指向 char 類型的指針,const 限定 p 指向的數據為只讀。所以 *p 的值不能被修改,而指針變量 p 本身的值可以被修改。
3.char * const p; 限定此指針變量為只讀,所以 p 的值不能被修改,而 *p 的值可以被修改。
4.const char *const p; 兩者皆限定為只讀,不能修改。

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

名稱欄目:C語言const詳解-創新互聯
本文路徑:http://vcdvsql.cn/article42/cecsec.html

成都網站建設公司_創新互聯,為您提供網站維護網站導航、網站改版企業建站定制網站網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設