久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

《C語(yǔ)言深度剖析》關(guān)鍵字介紹七

 走出塵埃 2016-03-16

感謝您關(guān)注莫日根電氣電子工作室微信,!如果您尚未關(guān)注,請(qǐng)點(diǎn)擊標(biāo)題下方的“莫日根電氣電子工作室”關(guān)注我們

《C語(yǔ)言深度剖析》關(guān)鍵字介紹七

看了這么幾天的關(guān)鍵字,,突然間意識(shí)到32個(gè)關(guān)鍵字看似不多,,但要學(xué)習(xí)掌握的卻是很多,。這幾天同事問(wèn)我為什么學(xué)習(xí)《C語(yǔ)言深度剖析》還要自己再這樣的敲寫(xiě)一遍?我想這樣可以更好的過(guò)一遍大腦吧,!也還因?yàn)檫@樣做感覺(jué)像是大家一起在學(xué),,畢竟現(xiàn)在人們是在時(shí)間碎片化學(xué)習(xí),這樣也算是分享吧,!

說(shuō)說(shuō)今天的第一個(gè)關(guān)鍵字吧,!

return關(guān)鍵字

return 用來(lái)終止一個(gè)函數(shù)并返回其后面跟著的值。

return (Va l),;// 此括號(hào)可以省略,。但一般不省略,尤其在返回一個(gè)表達(dá)式的值時(shí),。

return 可以返回些什么東西呢,?看下面例子:

char * Func(void)

{

char str[30];

return str;

}

str 屬于局部變量,位于棧內(nèi)存中,,在Func結(jié)束的時(shí)候被釋放,,所以返回str將導(dǎo)致錯(cuò)誤。

【return 語(yǔ)句不可返回指向“棧內(nèi)存”的“指針”,,因?yàn)樵搩?nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷毀】

const關(guān)鍵字

const 關(guān)鍵字也許該被替換為 readolny

const是constant 的縮寫(xiě),,是恒定不變的意思,也翻譯為常量,、常數(shù)等,。很不幸,正是因?yàn)檫@一點(diǎn),,很多人都認(rèn)為被 const修飾的值是常量,。這是不精確的,精確的說(shuō)應(yīng)該是只讀的變量,,其值在編譯時(shí)不能被使用,因?yàn)榫幾g器在編譯時(shí)不知道其存儲(chǔ)的內(nèi)容,?;蛟S當(dāng)初這個(gè)關(guān)鍵字應(yīng)該被替換為readonly 。那么這個(gè)關(guān)鍵字有什么用處和意義呢,?

const 推出的初始目的,,正是為了取代預(yù)編譯指令,消除它的缺點(diǎn),,同時(shí)繼承它的優(yōu)點(diǎn),。我們看看它與define 宏的區(qū)別。(很多人誤以為define 是關(guān)鍵字,,在這里我提醒你再回到本章前面看看32個(gè)關(guān)鍵字里是否有define),。

const 修飾的只讀變量

定義const只讀變量,,具有不可變性。

例如:

const int Max=100;

int Array[Max];

這里請(qǐng)?jiān)赩isualC++6.0 里分別創(chuàng)建.c 文件和.cpp 文件測(cè)試一下,。你會(huì)發(fā)現(xiàn)在.c 文件中,,編譯器會(huì)提示出錯(cuò),而在.cpp 文件中則順利運(yùn)行,。為什么呢,?我們知道定義一個(gè)數(shù)組必須指定其元素的個(gè)數(shù)。這也從側(cè)面證實(shí)在 C 語(yǔ)言中,,const修飾的Max 仍然是變量,,只不過(guò)是只讀屬性罷了;而在C++ 里,,擴(kuò)展了const的含義,,這里就不討論了。

注意:const修飾的只讀變量必須在定義的同時(shí)初始化,,想想為什么,?

留一個(gè)問(wèn)題:case 語(yǔ)句后面是否可以是const修飾的只讀變量呢?請(qǐng)動(dòng)手測(cè)試一下,。

節(jié)省空間,,避免不必要的內(nèi)存分配,同時(shí)提高效率

編譯器通常不為普通const只讀變量分配存儲(chǔ)空間,,而是將它們保存在符號(hào)表中,,這使得它成為一個(gè)編譯期間的值,沒(méi)有了存儲(chǔ)與讀內(nèi)存的操作,,使得它的效率也很高,。

例如:

#define M 3 //宏常量

const int N=5; // 此時(shí)并未將N 放入內(nèi)存中

......

int i=N; // 此時(shí)為N 分配內(nèi)存,以后不再分配,!

int I=M; // 預(yù)編譯期間進(jìn)行宏替換,,分配內(nèi)存

int j=N; // 沒(méi)有內(nèi)存分配

int J=M; // 再進(jìn)行宏替換,又一次分配內(nèi)存,!

const定義的只讀變量從匯編的角度來(lái)看,,只是給出了對(duì)應(yīng)的內(nèi)存地址,而不是象#define一樣給出的是立即數(shù),,所以,,const定義的只讀變量在程序運(yùn)行過(guò)程中只有一份拷貝(因?yàn)樗侨值闹蛔x變量,存放在靜態(tài)區(qū)),,而#define定義的宏常量在內(nèi)存中有若干個(gè)拷貝,。#define宏是在預(yù)編譯階段進(jìn)行替換,而const修飾的只讀變量是在編譯的時(shí)候確定其值。#define宏沒(méi)有類型,,而const修飾的只讀變量具有特定的類型,。

修飾一般變量

一般常量是指簡(jiǎn)單類型的只讀變量。這種只讀變量在定義時(shí),,修飾符 const可以用在類型說(shuō)明符前,,也可以用在類型說(shuō)明符后。例如:

int const i=2; 或 const inti=2;

修飾數(shù)組

定義或說(shuō)明一個(gè)只讀數(shù)組可采用如下格式:

int const a[5]={1, 2, 3, 4, 5};或

const int a[5]={1, 2, 3, 4, 5};

修飾指針

const int *p; // p可變,,p 指向的對(duì)象不可變

int const *p; // p 可變,,p 指向的對(duì)象不可變

int*constp; //p 不可變,p 指向的對(duì)象可變

const int*const p; // 指針p 和p 指向的對(duì)象都不可變

在平時(shí)的授課中發(fā)現(xiàn)學(xué)生很難記住這幾種情況,。這里給出一個(gè)記憶和理解的方法:

先忽略類型名(編譯器解析的時(shí)候也是忽略類型名),,我們看 const離哪個(gè)近?!敖畼桥_(tái)先得月”,,離誰(shuí)近就修飾誰(shuí)。

const int *p; //const 修飾*p,p 是指針,,*p是指針指向的對(duì)象,,不可變int const * p;//const修飾*p,p 是指針,*p是指針指向的對(duì)象,,不可變

int*const p;//const修飾p,,p 不可變,p 指向的對(duì)象可變

const int *constp; // 前一個(gè)const修飾*p,后一個(gè)const修飾p ,,指針p 和p 指向的對(duì)象都不可變,。

修飾函數(shù)的參數(shù)(感覺(jué)這個(gè)以后可以試試)

const修飾符也可以修飾函數(shù)的參數(shù),當(dāng)不希望這個(gè)參數(shù)值被函數(shù)體內(nèi)意外改變時(shí)使用,。例如:

void Fun(const int i);

告訴編譯器i 在函數(shù)體中的不能改變,,從而防止了使用者的一些無(wú)意的或錯(cuò)誤的修改。

修飾函數(shù)的返回值

const修飾符也可以修飾函數(shù)的返回值,,返回值不可被改變,。例如:

const int Fun (void);

在另一連接文件中引用const只讀變量:

extern const int i; // 正確的聲明

extern const int j=10; //錯(cuò)誤!只讀變量的值不能改變,。

注意這里是聲明不是定義,,關(guān)于聲明和定義的區(qū)別,請(qǐng)看本章開(kāi)始處,。

講了這么多講完了嗎?遠(yuǎn)沒(méi)有,。在 C++ 里,,對(duì) const做了進(jìn)一步的擴(kuò)展,還有很多知識(shí)未能講完,。有興趣的話,,不妨查找相關(guān)資料研究研究,。

《C語(yǔ)言深度剖析》關(guān)鍵字介紹七

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多