欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言關(guān)鍵字總結(jié)解析

 更新時(shí)間:2021年07月08日 15:54:57   投稿:newname  
這篇文章主要介紹了C語(yǔ)言關(guān)鍵字總結(jié)解析,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是本文的詳細(xì)內(nèi)容,需要的朋友可以參考下

C語(yǔ)言關(guān)鍵字總結(jié)

1.關(guān)鍵字變更歷史

1999年12月16日,ISO推出了C99標(biāo)準(zhǔn),該標(biāo)準(zhǔn)新增了5個(gè)C語(yǔ)言關(guān)鍵字:
inline restrict _Bool _Complex _Imaginary(注意bool 從來(lái)不是C語(yǔ)言的關(guān)鍵字)
2011年12月8日,ISO發(fā)布C語(yǔ)言的新標(biāo)準(zhǔn)C11,該標(biāo)準(zhǔn)新增了7個(gè)C語(yǔ)言關(guān)鍵字:
_Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic

2.關(guān)鍵字列表

auto :聲明自動(dòng)變量
break:跳出當(dāng)前循環(huán)
case:開關(guān)語(yǔ)句分支
char :聲明字符型變量或函數(shù)返回值類型
const :聲明只讀變量
continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
default:開關(guān)語(yǔ)句中的“其它”分支
do :循環(huán)語(yǔ)句的循環(huán)體
double :聲明雙精度浮點(diǎn)型變量或函數(shù)返回值類型
else :條件語(yǔ)句否定分支(與 if 連用)
enum :聲明枚舉類型
extern:聲明變量或函數(shù)是在其它文件或本文件的其他位置定義
float:聲明浮點(diǎn)型變量或函數(shù)返回值類型
for:一種循環(huán)語(yǔ)句
goto:無(wú)條件跳轉(zhuǎn)語(yǔ)句
if:條件語(yǔ)句
int: 聲明整型變量或函數(shù)
long :聲明長(zhǎng)整型變量或函數(shù)返回值類型
register:聲明寄存器變量
return :子程序返回語(yǔ)句(可以帶參數(shù),也可不帶參數(shù))
short :聲明短整型變量或函數(shù)
signed:聲明有符號(hào)類型變量或函數(shù)
sizeof:計(jì)算數(shù)據(jù)類型或變量長(zhǎng)度(即所占字節(jié)數(shù))
static :聲明靜態(tài)變量
struct:聲明結(jié)構(gòu)體類型
switch :用于開關(guān)語(yǔ)句
typedef:用以給數(shù)據(jù)類型取別名
unsigned:聲明無(wú)符號(hào)類型變量或函數(shù)
union:聲明共用體類型
void :聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類型指針
volatile:說(shuō)明變量在程序執(zhí)行中可被隱含地改變
while :循環(huán)語(yǔ)句的循環(huán)條件

3.c語(yǔ)言關(guān)鍵字優(yōu)點(diǎn)(c99,不是c11標(biāo)準(zhǔn))

簡(jiǎn)潔緊湊、靈活方便

  ANSI C一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫形式自由,區(qū)分大小寫。把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。 C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。

運(yùn)算符豐富

  C語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語(yǔ)言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。

數(shù)據(jù)類型豐富

  C語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。
同時(shí)對(duì)于不同的編譯器也有各種強(qiáng)大的擴(kuò)展功能。

另外

  C語(yǔ)言如此豐富數(shù)據(jù)類型及強(qiáng)大指針功能,其對(duì)硬件的管控能力極強(qiáng),所以許多操作系統(tǒng)內(nèi)核及MCU芯片程序開發(fā)都偏愛(ài)硬件。

4.這里可以提下volatile關(guān)鍵字,關(guān)于這個(gè)關(guān)鍵字有一些文章,參考 這篇 

   volatile總是與優(yōu)化有關(guān),編譯器有一種技術(shù)叫做數(shù)據(jù)流分析,分析程序中的變量在哪里賦值、在哪里使用、在哪里失效,分析結(jié)果可以用于常量合并,常量傳播等優(yōu)化,進(jìn)一步可以消除一些代碼。但有時(shí)這些優(yōu)化不是程序所需要的,這時(shí)可以用volatile關(guān)鍵字禁止做這些優(yōu)化。

  volatile的本意是“易變的” 因?yàn)樵L問(wèn)寄存器要比訪問(wèn)內(nèi)存單元快的多,所以編譯器一般都會(huì)作減少存取內(nèi)存的優(yōu)化,但有可能會(huì)讀臟數(shù)據(jù)。當(dāng)要求使用volatile聲明變量值的時(shí)候,系統(tǒng)總是重新從它所在的內(nèi)存讀取數(shù)據(jù),即使它前面的指令剛剛從該處讀取過(guò)數(shù)據(jù)。精確地說(shuō)就是,遇到這個(gè)關(guān)鍵字聲明的變量,編譯器對(duì)訪問(wèn)該變量的代碼就不再進(jìn)行優(yōu)化,從而可以提供對(duì)特殊地址的穩(wěn)定訪問(wèn);如果不使用valatile,則編譯器將對(duì)所聲明的語(yǔ)句進(jìn)行優(yōu)化。(簡(jiǎn)潔的說(shuō)就是:volatile關(guān)鍵詞影響編譯器編譯的結(jié)果,用volatile聲明的變量表示該變量隨時(shí)可能發(fā)生變化,與該變量有關(guān)的運(yùn)算,不要進(jìn)行編譯優(yōu)化,以免出錯(cuò))

看兩個(gè)事例:

1>告訴compiler不能做任何優(yōu)化

比如要往某一地址送兩指令:
int *ip =...; //設(shè)備地址
*ip = 1; //第一個(gè)指令
*ip = 2; //第二個(gè)指令
以上程序compiler可能做優(yōu)化而成:
int *ip = ...;
*ip = 2;
結(jié)果第一個(gè)指令丟失。如果用volatile, compiler就不允許做任何的優(yōu)化,從而保證程序的原意:
volatile int *ip = ...;
*ip = 1;
*ip = 2;
即使你要compiler做優(yōu)化,它也不會(huì)把兩次付值語(yǔ)句間化為一。它只能做其它的優(yōu)化。

2>用volatile定義的變量會(huì)在程序外被改變,每次都必須從內(nèi)存中讀取,而不能重復(fù)使用放在cache或寄存器中的備份。

例如:

volatile char a;
 
a=0;
 
while(!a){
 
//do some things;
 
}
 
doother();
 
如果沒(méi)有 volatiledoother()不會(huì)被執(zhí)行

到此這篇關(guān)于C語(yǔ)言關(guān)鍵字總結(jié)解析的文章就介紹到這了,更多相關(guān)C語(yǔ)言關(guān)鍵字總結(jié)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中的編碼小技巧

    C語(yǔ)言中的編碼小技巧

    這篇文章主要介紹了C語(yǔ)言中的編碼小技巧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 分享一下8年C++面向?qū)ο笤O(shè)計(jì)的經(jīng)驗(yàn)體會(huì)

    分享一下8年C++面向?qū)ο笤O(shè)計(jì)的經(jīng)驗(yàn)體會(huì)

    關(guān)于C++程序設(shè)計(jì)的書藉非常多,本章不講C++的語(yǔ)法,只講一些小小的編程道理。如果我能早幾年明白這些小道理,就可以大大改善數(shù)十萬(wàn)行程序的質(zhì)量了
    2017-07-07
  • opencv3/C++ FLANN特征匹配方式

    opencv3/C++ FLANN特征匹配方式

    今天小編就為大家分享一篇opencv3/C++ FLANN特征匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • C語(yǔ)言實(shí)例講解四大循環(huán)語(yǔ)句的使用

    C語(yǔ)言實(shí)例講解四大循環(huán)語(yǔ)句的使用

    C語(yǔ)言有四大循環(huán)語(yǔ)句,他們之間可以進(jìn)行任意轉(zhuǎn)換。本文將首先對(duì)其語(yǔ)法進(jìn)行講解,然后通過(guò)一個(gè)實(shí)例用四種循環(huán)來(lái)實(shí)現(xiàn)。相信通過(guò)本文的學(xué)習(xí),大家都能夠?qū)語(yǔ)言循環(huán)語(yǔ)句有著熟練的掌握
    2022-05-05
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的控制臺(tái)三子棋游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的控制臺(tái)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的控制臺(tái)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 深入理解數(shù)組指針與指針數(shù)組的區(qū)別

    深入理解數(shù)組指針與指針數(shù)組的區(qū)別

    本篇文章是對(duì)數(shù)組指針與指針數(shù)組的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)騎士走棋盤算法

    C++實(shí)現(xiàn)騎士走棋盤算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)騎士走棋盤算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++如何將字符串顛倒輸出

    C++如何將字符串顛倒輸出

    這篇文章主要介紹了C++如何將字符串顛倒輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 詳解C++編程中斷言static_assert的使用

    詳解C++編程中斷言static_assert的使用

    這篇文章主要介紹了C++編程中斷言static_assert的使用,斷言在debug時(shí)非常有用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • C++模擬實(shí)現(xiàn)list功能

    C++模擬實(shí)現(xiàn)list功能

    list的底層是一個(gè)循環(huán)雙向鏈表結(jié)構(gòu),雙向鏈表中每個(gè)元素存儲(chǔ)在互不相關(guān)的獨(dú)立節(jié)點(diǎn)中,在節(jié)點(diǎn)中通過(guò)指針指向其前一個(gè)元素和后一個(gè)元素,接下來(lái)通過(guò)本文給大家分享C++模擬實(shí)現(xiàn)list的示例代碼,需要的朋友可以參考下
    2021-08-08

最新評(píng)論