最新国产在线不卡AV,国产又爽又黄的视频免费看,精品综合久久久久久97,日韩欧美高清中文字幕免费一区二区

            科普

            c語言基礎(chǔ)常識(shí)有哪些_C語言基礎(chǔ)常識(shí) IT知識(shí)

            電腦知識(shí)優(yōu)爾供稿

            C語言具有簡(jiǎn)潔緊湊,靈活方便,運(yùn)算符豐富,數(shù)據(jù)類型豐富,表達(dá)方式靈活實(shí)用等特點(diǎn),所以C語言程序設(shè)計(jì)更主動(dòng)、靈活。下面是9252兒童網(wǎng)小編為大家整理的c語言基礎(chǔ)常識(shí),希望對(duì)你們有幫助。

            c語言基礎(chǔ)常識(shí)有哪些

            C語言基礎(chǔ)知識(shí)

            數(shù)據(jù)類型:

            常量:常量包括字面常量、直接常量和符號(hào)常量;

            變量:C語言規(guī)定標(biāo)志符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須是字母或者下劃線;必須壓迫先定義后使用;每一個(gè)變量被定義以確定類型后,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元;

            整數(shù)類型:整數(shù)常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制;“%d”

            整形變量:數(shù)據(jù)在內(nèi)存中存放形式是以二進(jìn)制形式存放;有int型、short int型和long int型,無符號(hào)整型變量的范圍是0~65535,有符號(hào)型為-32768—32767.通常把long定義為32位,把short定義為16位,int可以是32位也可以為16位,這都主要取決于機(jī)器字長(zhǎng)。

            實(shí)型常量的表示方法:(1)十進(jìn)制,0.0;(2)指數(shù)形式,123e3

            實(shí)型變量:實(shí)數(shù)型數(shù)據(jù)在內(nèi)存中的存放形式,一般在內(nèi)存中占4個(gè)字節(jié),分成整數(shù)部分和小數(shù)部分存放。實(shí)型變量分為float型、double型long double型。實(shí)型數(shù)據(jù)會(huì)存在舍入誤差。

            實(shí)型常量的類型:C編譯系統(tǒng)將實(shí)型常量作為雙精度來處理。

            字符型數(shù)組:(一)字符常量:轉(zhuǎn)義字符(\n——換行,\t——tab,\r——回車,\f——換頁(yè),\b——退格,\ddd——1到3位8進(jìn)制的數(shù)代表的字符)

            (二)字符變量:字符數(shù)據(jù)存儲(chǔ)形式實(shí)際是以ASCII碼存儲(chǔ)。“%c”

            字符串常量:雙撇號(hào)括起來的一系列字符序列。

            C的運(yùn)算符有以下幾種:

            1、算術(shù)運(yùn)算符(+ - * / %)結(jié)合方向自左向右

            2、關(guān)系運(yùn)算符(> < =="">= <= !="">

            3、邏輯運(yùn)算符(! && ||)

            4、位運(yùn)算符(<>> ~ | ^ &)

            5、賦值運(yùn)算符(=及符號(hào)擴(kuò)展賦值運(yùn)算符)

            6、條件運(yùn)算符(? : )

            7、逗號(hào)運(yùn)算符( , )

            8、指針運(yùn)算符(* &)

            9、求字節(jié)運(yùn)算符(sizeof)

            10、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))

            11、分量運(yùn)算符( . ->)

            12、下標(biāo)運(yùn)算符([])

            13、其他

            控制語句:

            完成一定的控制功能。

            1、if()~else~

            2、for()~

            3、while()~

            4、do~while()

            5、continue

            6、break

            7、switch

            8、goto

            9、return

            字符數(shù)據(jù)的輸入輸出:

            1、putchar()輸入字符變量

            2、getchar()只能接受一個(gè)字符

            格式輸入輸出:

            1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)

            2、scanf(格式控制,地址列表)

            數(shù)組

            一維數(shù)組的定義:類型說明符 數(shù)組名【常量表達(dá)式】;先定義后引用;一維數(shù)組初始化時(shí)可以只對(duì)一部分元素初始化,在對(duì)全部數(shù)組元素初始化的時(shí)候可以部規(guī)定長(zhǎng)度;但是若被定義的數(shù)組長(zhǎng)度與提供的初始值不一樣時(shí),則數(shù)組長(zhǎng)度不能省略。

            二維數(shù)組的定義:類型說明符 數(shù)組名【常量表達(dá)式】【常量表達(dá)式】C語言中存放二維數(shù)組是先存放第一行的元素,緊接著是第二行,其實(shí)也是以一維的方式存放。如果初始化時(shí)能指定所有元素的初始值,第一維大小可以省略,但是第二維不能省略。

            字符數(shù)組:定義和初始化跟數(shù)組差不多,只是需要加單引號(hào)。字符和字符串結(jié)束標(biāo)志,C語言規(guī)定,以'\0’代表。

            字符串處理函數(shù):

            1、puts()將一個(gè)字符串輸出到終端

            2、gets()從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值。

            3、strcat()鏈接兩個(gè)字符數(shù)組中的字符串。

            4、strcpy()字符串復(fù)制函數(shù)。

            5、strcmp()比較字符串作用。

            6、strlen()測(cè)試字符串長(zhǎng)度的函數(shù)不包括“\0”

            7、strlwr()將字符串中的大寫字母轉(zhuǎn)換為小寫字母。

            8、strupr()將字符串中的小寫字母轉(zhuǎn)換為大寫字母。

            這里準(zhǔn)備了一個(gè)練習(xí)項(xiàng)目-->推箱子 給大家鞏固復(fù)習(xí)

            函數(shù)

            (1)一個(gè)源程序由多個(gè)函數(shù)組成。

            (2)C程序的執(zhí)行從main()函數(shù)開始;

            (3)所有函數(shù)都是平行的;

            (4)函數(shù)分類;可以分為標(biāo)準(zhǔn)和自定義,還可以分為有參函數(shù)和無參函數(shù)。

            函數(shù)定義的一般形式:

            (1)類型標(biāo)志符 函數(shù)名()

            {

            聲明部分

            語句

            }

            (2)類型標(biāo)志符 函數(shù)名(形式參數(shù)列表)

            {

            聲明部分

            語句

            }

            #includevoid fun(){ printf("學(xué)習(xí)交流qun:879098023 \n");}int main(){ fun(); return 0;}

            關(guān)于形參和實(shí)參的說明:

            (1) 在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),他們并不占用內(nèi)存中的存儲(chǔ)單元,只有發(fā)生調(diào)用時(shí),才會(huì)分配內(nèi)存。

            (2) 實(shí)參可以是常量、變量或者表達(dá)式;有時(shí)傳遞的時(shí)地址;

            (3) 在被定義中,形參必須指定類型;

            (4) 實(shí)參與形參的類型應(yīng)相同或賦值兼容;

            (5) C語言規(guī)定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只有實(shí)參傳遞給形參,而不能由形參傳遞給實(shí)參。

            函數(shù)的返回值:

            希望通過函數(shù)調(diào)用使主調(diào)函數(shù)得到一個(gè)確定的值。

            (1)函數(shù)的返回值是通過函數(shù)中的return語句獲取的。

            (2)函數(shù)值的類型;

            (3)如果函數(shù)值的類型和return語句中表達(dá)式的值不一樣,則以函數(shù)類型為準(zhǔn)。

            (4)如果調(diào)用函數(shù)中沒有return語句,并不帶回一個(gè)確定的用戶需要的值,函數(shù)不是不帶回值,而只是不帶回有用的值,帶回一個(gè)不確定的值。

            (5)如不需要帶回任何值,用void。

            函數(shù)的調(diào)用:

            調(diào)用方式1、函數(shù)語句;2、函數(shù)表達(dá)式;3、函數(shù)參數(shù)。

            被調(diào)用的函數(shù)的聲明:

            一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)所具備的條件:

            1、首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù);

            2、如果使用庫(kù)函數(shù),一般應(yīng)該在本文件開頭用#include命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)在所需要用到的信息“包含”到本文件中。.h文件是頭文件所用的后綴。

            3、如果使用用戶自己定義的函數(shù),而且該函數(shù)與使用它的函數(shù)在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)做聲明。

            4、如果被調(diào)用的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前可以不必聲明。

            5、如果已在所有函數(shù)定義之前,在函數(shù)的外部已做了函數(shù)聲明,則在各個(gè)主調(diào)函數(shù)中不必多所調(diào)用的函數(shù)在做聲明。

            局部變量和全局變量:

            (一)局部變量在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只是在本函數(shù)范圍內(nèi)的有效,主函數(shù)也不能使用其它函數(shù)中定義的變量;不同函數(shù)中可以使用相同的名字的變量,他們代表不同的對(duì)象,互不干擾;形式參數(shù)也是局部變量;在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效,這種復(fù)合句也可以稱為“分程序”或“程序塊”;

            (二)全局變量,在函數(shù)之外定義的變量稱為外部變量,全局變量可以增加函數(shù)間數(shù)據(jù)聯(lián)系的渠道,一般不再必要時(shí)不要使用,他在程序的全部執(zhí)行過程中占用存儲(chǔ)單元,是函數(shù)的通用性,使用全局變量會(huì)使程序的清晰性降低。還要注意若果同一源文件中,外部變量和局部變量同名,則在局部變量作用范圍內(nèi),外部變量被“屏蔽”,不起任何作用。

            變量的存儲(chǔ)類別:

            (變量值存儲(chǔ)時(shí)間)動(dòng)態(tài)存儲(chǔ)方式,在程序運(yùn)行期間進(jìn)行分動(dòng)態(tài)的分配存儲(chǔ)空間的方式,靜態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間分配固定的存儲(chǔ)空間的方式;存儲(chǔ)空間分為程序區(qū)、靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū);全局變量全部放在靜態(tài)存儲(chǔ)區(qū)中,程序開始時(shí)分配空間,完畢時(shí)釋放;動(dòng)態(tài)存儲(chǔ)區(qū)中存放以下數(shù)據(jù):

            1、函數(shù)形式參數(shù);

            2、自動(dòng)變量;

            3、函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址;在C語言中每個(gè)變量和函數(shù)都有兩個(gè)屬性,是數(shù)據(jù)類型和數(shù)據(jù)存儲(chǔ)類型,存儲(chǔ)類別是數(shù)據(jù)在內(nèi)存中存儲(chǔ)的方式。

            存儲(chǔ)方式分為靜態(tài)和動(dòng)態(tài)存儲(chǔ)類,具體包含有四種:自動(dòng)的(auto),靜態(tài)的(static),寄存器的(register),外部的(extern),如果不加以聲明,就自認(rèn)為是auto型就會(huì)自動(dòng)分配存儲(chǔ)空間屬于動(dòng)態(tài)存儲(chǔ)方式。

            Static聲明局部變量是在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即占用存儲(chǔ)單元不釋放,在下一次調(diào)用該函數(shù)時(shí),該變量已有值,就是上次函數(shù)調(diào)用結(jié)束時(shí)的值。其中需要說明的是在定義局部變量不賦初值的話,則靜態(tài)局部變量編譯時(shí)自動(dòng)賦值為0或者空字符,雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但是其他函數(shù)不能引用它的。靜態(tài)局部變量主要用在當(dāng)初始化后,變量只是被引用而不改變其值。

            Register變量是C語言中允許將局部變量的值放在CPU中的寄存器中需要時(shí)直接從寄存器中取出來參加運(yùn)算,不必再到內(nèi)存中提取,但是計(jì)算機(jī)系統(tǒng)中寄存器數(shù)量有限,不能任意定義任意多的存儲(chǔ)器,局部靜態(tài)變量不能定義為寄存器變量。

            Extern聲明外部變量,用以擴(kuò)展外部變量的作用域。在一個(gè)文件中,如果定義之前的函數(shù)想引用該外部變量,則應(yīng)該在引用之前用關(guān)鍵字extern對(duì)該變量做外部變量聲明。在多文件中,也可以采用extern聲明的辦法進(jìn)行外部變量聲明。有時(shí)希望某些局部變量只限于被本文件引用,而不能被其他文件引用,這時(shí)就可以采用在定義外部變量時(shí)外加一個(gè)static,這在程序模塊化設(shè)計(jì)中加強(qiáng)了通用性。

            Static來聲明一個(gè)變量的作用有二個(gè),一個(gè)是在聲明對(duì)局部變量時(shí)。則為該變量分配的空間在整個(gè)程序執(zhí)行期間始終存在;一個(gè)是在對(duì)全局變量聲明中,該變量的作用域僅限于本文件模塊操作。

            C語言基礎(chǔ)常識(shí)

            1.C語言中,變量必須先聲明后使用,即一個(gè)程序塊(花括號(hào)對(duì))中所有臨時(shí)變量必須在第一條可執(zhí)行語句之前全部聲明,而不能像C++那樣隨用隨聲明;

            2.C語言中參數(shù)傳值傳遞形參,即為參數(shù)的拷貝,此與C++/JAVA相同,同時(shí)值得注意,ANSI C不支持引用,此與C++/JAVA有區(qū)別,那么要對(duì)參數(shù)進(jìn)行修改只能使用指針方式(指針傳值指針本身仍是形參,要修改指針本身那必須使用雙重指針);

            3.C語言默認(rèn)類型為int,即參數(shù)無類型或函數(shù)無返回值類型聲明,則認(rèn)為是int(貌似一些編譯器不支持),同時(shí)不建議使用該特性;

            4.無參數(shù)的函數(shù)聲明應(yīng)當(dāng)使用void表明,否則C語言按照老式聲明方法忽略參數(shù)類型檢查;

            5.全局變量建議全大寫,局部變量建議全小寫,內(nèi)部變量31個(gè)字符有效,外部變量不區(qū)分大小寫,僅6個(gè)字符有效,所以必須保持唯一性;

            6.ANSI C是按照多字節(jié)實(shí)現(xiàn)的,UNICODE是后來發(fā)展的,所以有char/WCHAR,與.NET中char直接是雙字節(jié)有區(qū)別,在C#中導(dǎo)入dll時(shí)值得注意;

            7.C語言支持枚舉,并且枚舉和int直接強(qiáng)制類型轉(zhuǎn)換即可,比.NET方便;

            8.#define聲明宏定義直接在編譯時(shí)替換,不進(jìn)行類型檢查,const聲明常量則可以進(jìn)行類型檢查;

            9.運(yùn)算符的優(yōu)先級(jí)記憶比較麻煩,還是()可靠;

            10.goto并不是一無是處,在不考慮程序可讀性的情況下可能獲得更高的效率;

            11.函數(shù)實(shí)際也可以與特殊的類型相對(duì)應(yīng),那樣對(duì)于理解函數(shù)指針比較方便,函數(shù)為外部類型;

            12.static用于全局變量和函數(shù)則限定該變量和函數(shù)的使用范圍僅為該源文件(從而無需考慮與其他源文件不得重名),用于函數(shù)內(nèi)部變量則該變量的內(nèi)存分配和回收不再同于普通臨時(shí)變量(調(diào)用函數(shù)生成,函數(shù)返回銷毀),而是一直存在于靜態(tài)變量區(qū),從而可以保存一些狀態(tài);

            13.頭文件的作用體現(xiàn)在調(diào)用其他源文件時(shí)不需要再次寫函數(shù)定義,所以實(shí)現(xiàn)函數(shù)是不需要頭文件的,調(diào)用時(shí)才需要,可以采用富頭文件定義一大組接口,然后使用多個(gè)源文件分別實(shí)現(xiàn);

            14.寄存器變量使用register聲明,僅適用于使用頻率高的局部變量(含形參)(受限于底層硬件,不一定會(huì)被分配到寄存器,但是這么寫不影響效率);

            15.全局變量和靜態(tài)變量默認(rèn)初始化為全零且僅初始化一次,局部變量默認(rèn)初始化為未定義且每次都會(huì)重新初始化;

            16.遞歸調(diào)用的方法一般比較緊湊,但是每次調(diào)用會(huì)單獨(dú)維護(hù)調(diào)用的堆棧,所以效率不是最高;

            17.#include的作用體現(xiàn)于將一些內(nèi)容避免重新寫一遍(主要是類型、函數(shù)和外部變量定義),所以實(shí)際上不一定為h文件;

            18.表示一行尚未結(jié)束,對(duì)于定義長(zhǎng)的字符串和define比較有用;

            19.函數(shù)調(diào)用的.執(zhí)行順序不確定,所以對(duì)于a()+b()這樣函數(shù)中使用相同變量并且改變其值的需要借助臨時(shí)變量處理,防止不同實(shí)現(xiàn)的調(diào)用順序不一致;

            20.##用于宏定義中連接前后兩個(gè)部分,如cat(a, b)   a ## b;

            21.指針是C/C++的重要內(nèi)容,當(dāng)然也是雙面刃,用好了很方便而且高效,用不好那就造成程序不穩(wěn)定;

            22.使用va_list, va_start, va_arg, va_end來定義可變參數(shù)的函數(shù),通過va_start函數(shù)中的第一個(gè)不變參數(shù)將va_list指向參數(shù)列表(函數(shù)調(diào)用的棧中),然后通過va_arg獲取每個(gè)參數(shù)并將va_list移動(dòng)指定類型的長(zhǎng)度,最后則通過va_end完成必要的回收工作,需要指出的是va_arg沒有結(jié)束邊界,所以比較有效的方式有兩種,一種對(duì)于參數(shù)類型一致,則可以第一個(gè)參數(shù)指出后續(xù)參數(shù)的總數(shù),然后依次獲取,另一種對(duì)于不同類型的參數(shù)混用,則可以通過類型標(biāo)識(shí)+參數(shù)配對(duì)的方式進(jìn)行使用(第一個(gè)參數(shù)依然可以指定數(shù)量,當(dāng)然也可以檢查標(biāo)識(shí)),從而避免最后讀取無效的參數(shù),對(duì)于可變參數(shù)僅支持int和double兩種類型(參數(shù)未限定類型,故按照舊式聲明理解)以及指針類型;

            23.函數(shù)指針是用來在C語言中實(shí)現(xiàn)動(dòng)態(tài)調(diào)用的比較有效的方式

            24.結(jié)構(gòu)體用作參數(shù)依然是拷貝為形參傳遞,這點(diǎn)與JAVA中全部對(duì)象都是類有區(qū)別(類的對(duì)象通過引用傳值,C#支持struct),所以對(duì)于大的結(jié)構(gòu)體事宜使用指針傳遞,而對(duì)于小的結(jié)構(gòu)體拷貝傳值效率并不低;

            25.代碼中字符數(shù)組為靜態(tài)常量,對(duì)其操作無效,程序塊中數(shù)組的聲明是可以自動(dòng)回收的,通過malloc/calloc分配的內(nèi)存為堆內(nèi)存,需要自行通過free回收;

            轉(zhuǎn)義字符? 轉(zhuǎn)義字符的意義 ASCII碼?

            \n? 回車換行? 10?

            \t? 橫向跳到下一制表位置? 9?

            \b? 退格? 8?

            \r? 回車? 13?

            \f? 走紙換頁(yè)? 12?

            \\? 反斜線符"\"? 92?

            \'? 單引號(hào)符? 39?

            \”? 雙引號(hào)符? 34?

            \a? 鳴鈴? 7?

            \ddd? 1~3位八進(jìn)制數(shù)所代表的字符?

            \xhh? 1~2位十六進(jìn)制數(shù)所代表的字符?

            (五)字符串常量?

            C語言中,以雙引號(hào)括起來的,由若干個(gè)字符組成的序列即為字符串常量。?

            例:“ni hao” “happy”等等。?

            (六)符號(hào)常量?

            符號(hào)常量是由宏定義“#define“定義的常量,在C程序中可用標(biāo)識(shí)符代表一個(gè)常量。?

            例:計(jì)算圓的面積的c程序。?

            #include?

            #define PI 3.14159?

            main()?

            {?

            float r,s;?

            r=12.5;?

            S=PI _r_r;?

            printf(“s= %f ”,s);?

            }?

            說明:?#define 是宏定義,此程序中所有出現(xiàn)PI的地方都代表3.14159,同時(shí)PI稱為符號(hào)常量。習(xí)慣上我們用大寫字母來表示符號(hào)常量,小寫字母表示變量,這樣比較容易區(qū)別。?

            類型的自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換

            當(dāng)同一表達(dá)式中各數(shù)據(jù)的類型不同時(shí),編譯程序會(huì)自動(dòng)把它們轉(zhuǎn)變成同一類型后再進(jìn)行計(jì)算。轉(zhuǎn)換優(yōu)先級(jí)為:?

            char < int < float < double?

            即左邊級(jí)別“低“的類型向右邊轉(zhuǎn)換。具體地說,若在表達(dá)式中優(yōu)先級(jí)最高的數(shù)據(jù)是double型,則此表達(dá)式中的其他數(shù)據(jù)均被轉(zhuǎn)換成double型,且計(jì)算結(jié)果也是double型;若在表達(dá)式中優(yōu)先級(jí)最高的數(shù)據(jù)是float型,則此表達(dá)式中的其他數(shù)據(jù)均被轉(zhuǎn)換成float型,且計(jì)算結(jié)果也是float型。?

            在做賦值運(yùn)算時(shí),若賦值號(hào)左右兩邊的類型不同,則賦值號(hào)右邊的類型向左邊的類型轉(zhuǎn)換;當(dāng)右邊的類型高于左邊的類型時(shí),則在轉(zhuǎn)換時(shí)對(duì)右邊的數(shù)據(jù)進(jìn)行截取。?

            除自動(dòng)轉(zhuǎn)換外,還有強(qiáng)制轉(zhuǎn)換,表示形式是:?

            ( 類型 )(表達(dá)式);?

            例:(int)(a+b)?

            討論:當(dāng)a值賦值為3.4,b值賦值為2.7,(int)(a+b)和(int)a+b的值分別為多少??

              為你推薦