一.變量
1.1定義變量的方法
如圖中所示,變量可被定義為各種數(shù)據(jù)類型,如int 整型 char字符數(shù)據(jù)類型,short短整型,float單精度浮點數(shù),double雙精度浮點數(shù)等等。一般在變量定義后,需給變量賦值,如圖中對所有變量給與了0的賦值,這也是一個良好的代碼習(xí)慣。
1.2變量的分類
變量分為局部變量和全局變量。
局部變量:定義在代碼塊內(nèi)部的變量,一個大括號中所有代碼便是一個代碼塊,局部變量只在代碼塊中存在和生效,如下圖中這種情況
變量被定義a和第一個輸出函數(shù)printf在同一個代碼塊中,所以輸出函數(shù)可以成功的輸出代碼a的值0。但變量b被定義的代碼塊和第二個輸出函數(shù)printf不在同一個代碼塊中,變量b只在其被定義的代碼塊中存在,在第二個輸出函數(shù)printf所在的代碼塊中不存在,所以編譯器會報錯,未定義標(biāo)識符b。
如果是上圖這種情況,變量a的值是可以被輸出的,因為輸出函數(shù)printf仍在變量a所在的這個整體的代碼塊(大括號之中)。
如上的變量a與變量b,被定義在某一個代碼塊中的變量,即為局部變量。
全局變量:被定義在代碼塊之外的變量,但要保證在#include<stdio.h>之后才定義,作用域為全體范圍,整個程序的作用域該變量均存在。
如上圖該程序的輸出結(jié)果為10。但當(dāng)代碼塊中出現(xiàn)和全局變量同名的變量時,全局變量的值會被覆蓋,如下圖。會將代碼塊中局部變量的值覆蓋全局變量的值,但僅在該代碼塊中起到這樣的效果,如果其它代碼塊中沒有和全局變量同名的局部變量,仍以全局變量的值為該變量的值。
1.3變量的使用
先定義變量,然后變量可以參加加減乘除等運算,也可以使用printf輸出函數(shù)打印該變量的值,或者使用scanf輸入函數(shù),從外部輸入對該變量進(jìn)行賦值。
輸入該變量的值時候,要在該變量前面加&符號,&符號的意思是取地址,又叫取地址符號。
二.常量
C語言中常量分為字面常量(包括字符常量,const 修飾的常變量,#define定義的標(biāo)識符常量,枚舉常量四種常量。
2.1字面常量
字面常量即用數(shù)字和字符組成的常量,如下圖所示。
2.2 const修飾的常變量
如上圖所示,對在定義一個變量的時候在前面加上const代表該變量是不可修改的。但該變量本質(zhì)上還是作為一個變量存在,又被稱為常變量。例如在定義數(shù)組的時候只能使用常量,假如使用了const修飾的常變量,大部分編譯器會報錯(因為在C99標(biāo)準(zhǔn)之前,變長數(shù)組,不允許用變量指定數(shù)組大小)。如下圖所示,定義數(shù)組大小只可以用常量!!
2.3#define定義的標(biāo)識符常量
如上圖所示可以用#define+常量名+具體大小的形式定義標(biāo)識符常量,上圖的MAX便是這么定義的,在代碼習(xí)慣中一般用大寫字母。
2.4 枚舉常量
枚舉的意思是可以一一列舉,如生活中的性別(男性和女性),人種(黃種人,白種人和黑種人),這樣種類比較少的常量可以用枚舉類型,作為枚舉常量。
定義枚舉類型的時候如上圖所示,枚舉這種類型可能的取值就是枚舉常量。枚舉常量和枚舉常量之前用逗號隔開,所有的枚舉常量被放在一個大括號中,在該大括號的末尾用分號作為結(jié)束。
三.字符和字符串
3.1 定義
由單引號引起的單個字符或者字母被成為字符,如"a" "b"均為字符,由雙引號引起的一串字符被成為字符串如"abc" "sfc"都被成為字符串,""也是字符串的一種,被成為空字符串。如下圖所示,"a" "#"為字符,"abc","a","",均為字符串。
3.2字符串的應(yīng)用
可以將字符串放在在字符數(shù)組中,如定義一個字符數(shù)組 char arr1[]="abc";這里的arr為該字符數(shù)組的名稱。但不能將字符串放在一個變量中,如char ch="abc";這樣的形式是錯誤的。
字符串還可以用strlen函數(shù)去計算長度,但在使用strlen計算字符串長度之前,去引用頭函數(shù)#include<string.h>。在計算字符串長度的時候每一個字符是1長度,但轉(zhuǎn)義字符也是一個字符,整體算一個長度。在用strlen函數(shù)計算長度的時候""為終止的位置,字符串后自帶一個"",字符后需要人為添加"",否則在計算字符長度的時候,會一直到內(nèi)存中出現(xiàn)""的時候才會停止,這樣的話字符的長度便成為了一個隨機數(shù),顯然是不行的,所以要人為添加""。
常用的轉(zhuǎn)義字符如上圖,ddd的意識為后面跟一個,兩個或者三個8以下的數(shù)字時,需要將整體八進(jìn)制轉(zhuǎn)換為十進(jìn)制,再根據(jù)ASCII碼值輸出ASCI碼值對應(yīng)的字符。xdd的意思為后面x跟著兩個十六進(jìn)制的數(shù)字,整體為一個轉(zhuǎn)義字符,將十六進(jìn)制的轉(zhuǎn)化為十進(jìn)制,再輸出其對應(yīng)的字符。
3.3轉(zhuǎn)義字符
即在C語言中,有時間一些字符的意思可能被編譯器曲解,所以這時候需要用轉(zhuǎn)義字符來轉(zhuǎn)變原來的意思,得到我們想要的意思。
例如在上圖中,我們想要打印test.c這個文件的位置,但結(jié)果缺不盡人意,因為兩個 被識別為轉(zhuǎn)義字符,意識是縮進(jìn)四格。104被識別為DDD的形式,104被當(dāng)作一個八進(jìn)制的數(shù)字,在轉(zhuǎn)化為十進(jìn)制的數(shù)后輸出了其ASCII碼值對應(yīng)的字符――大寫字母D。舉例,如下圖所示DDD和XDD的情況。
如上圖所示,DDD先將其轉(zhuǎn)化為十進(jìn)制,71轉(zhuǎn)化為十進(jìn)制是57,而57對應(yīng)的ASCII值對應(yīng)的字符為9,所以打印輸出了9.XDD同理先將轉(zhuǎn)化為十進(jìn)制,x62轉(zhuǎn)化為10進(jìn)制是98,而98對應(yīng)的ASCII值對應(yīng)的字符為b。故printf函數(shù)打印了小寫字母b。
如果不想造成上上上圖的困擾,正確的打印該文件在計算機中的存儲位置,這時候就需要在每個再加一個,對其進(jìn)行轉(zhuǎn)移,便能正確輸出了,如下圖所示。
四.注釋
注釋分為C注釋方式和C++注釋方式。//C99之后引入的注釋方式 ---> C++的注釋風(fēng)格/* C99之前C語言的注釋方式 --> C的注釋風(fēng)格, 缺陷是不支持嵌套注釋*/
上圖為C語言的注釋風(fēng)格,缺陷是不能進(jìn)行嵌套注釋,會在遇到第一個*/時候注釋停止。
上圖是C++語言的注釋風(fēng)格,//后整行皆為注釋內(nèi)容,也是現(xiàn)在比較流行的注釋方式。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!
原文鏈接:https://blog.csdn.net/HAORANCHIDOUZI/article/details/120816092