C語言基礎知識匯總
C語言具有簡潔緊湊,靈活方便,運算符豐富,數(shù)據類型豐富,表達方式靈活實用等特點,所以C語言程序設計更主動、靈活。很多人從C語言入門編程,下面整理了一些C語言基礎知識,希望對大家有所幫助!
1.C語言中,變量必須先聲明后使用,即一個程序塊(花括號對)中所有臨時變量必須在第一條可執(zhí)行語句之前全部聲明,而不能像C++那樣隨用隨聲明;
2.C語言中參數(shù)傳值傳遞形參,即為參數(shù)的拷貝,此與C++/JAVA相同,同時值得注意,ANSIC不支持引用,此與C++/JAVA有區(qū)別,那么要對參數(shù)進行修改只能使用指針方式(指針傳值指針本身仍是形參,要修改指針本身那必須使用雙重指針);
3.C語言默認類型為int,即參數(shù)無類型或函數(shù)無返回值類型聲明,則認為是int(貌似一些編譯器不支持),同時不建議使用該特*;
4.無參數(shù)的函數(shù)聲明應當使用void表明,否則C語言按照老式聲明方法忽略參數(shù)類型檢查;
5.全局變量建議全大寫,局部變量建議全小寫,內部變量31個字符有效,外部變量不區(qū)分大小寫,僅6個字符有效,所以必須保持唯一*;
6.ANSIC是按照多字節(jié)實現(xiàn)的,UNICODE是后來發(fā)展的,所以有char/WCHAR,與中char直接是雙字節(jié)有區(qū)別,在C#中導入dll時值得注意;
7.C語言支持枚舉,并且枚舉和int直接強制類型轉換即可,比方便;
8.#define聲明宏定義直接在編譯時替換,不進行類型檢查,const聲明常量則可以進行類型檢查;
9.運算符的優(yōu)先級記憶比較麻煩,還是()可靠;
10.goto并不是一無是處,在不考慮程序可讀*的情況下可能獲得更高的效率;
11.函數(shù)實際也可以與特殊的類型相對應,那樣對于理解函數(shù)指針比較方便,函數(shù)為外部類型;
12.static用于全局變量和函數(shù)則限定該變量和函數(shù)的使用范圍僅為該源文件(從而無需考慮與其他源文件不得重名),用于函數(shù)內部變量則該變量的內存分配和回收不再同于普通臨時變量(調用函數(shù)生成,函數(shù)返回銷毀),而是一直存在于靜態(tài)變量區(qū),從而可以保存一些狀態(tài);
13.頭文件的作用體現(xiàn)在調用其他源文件時不需要再次寫函數(shù)定義,所以實現(xiàn)函數(shù)是不需要頭文件的,調用時才需要,可以采用富頭文件定義一大組接口,然后使用多個源文件分別實現(xiàn);
14.寄存器變量使用register聲明,僅適用于使用頻率高的局部變量(含形參)(受限于底層硬件,不一定會被分配到寄存器,但是這么寫不影響效率);
15.全局變量和靜態(tài)變量默認初始化為全零且僅初始化一次,局部變量默認初始化為未定義且每次都會重新初始化;
16.遞歸調用的方法一般比較緊湊,但是每次調用會單獨維護調用的堆棧,所以效率不是最高;
17.#include的作用體現(xiàn)于將一些內容避免重新寫一遍(主要是類型、函數(shù)和外部變量定義),所以實際上不一定為h文件;
18.表示一行尚未結束,對于定義長的字符串和define比較有用;
19.函數(shù)調用的執(zhí)行順序不確定,所以對于a()+b()這樣函數(shù)中使用相同變量并且改變其值的需要借助臨時變量處理,防止不同實現(xiàn)的調用順序不一致;
20.##用于宏定義中連接前后兩個部分,如cat(a,b)a##b;
21.指針是C/C++的重要內容,當然也是雙面刃,用好了很方便而且高效,用不好那就造成程序不穩(wěn)定;
22.使用va_list,va_start,va_arg,va_end來定義可變參數(shù)的函數(shù),通過va_start函數(shù)中的第一個不變參數(shù)將va_list指向參數(shù)列表(函數(shù)調用的棧中),然后通過va_arg獲取每個參數(shù)并將va_list移動指定類型的長度,最后則通過va_end完成必要的回收工作,需要指出的是va_arg沒有結束邊界,所以比較有效的方式有兩種,一種對于參數(shù)類型一致,則可以第一個參數(shù)指出后續(xù)參數(shù)的總數(shù),然后依次獲取,另一種對于不同類型的參數(shù)混用,則可以通過類型標識+參數(shù)配對的方式進行使用(第一個參數(shù)依然可以指定數(shù)量,當然也可以檢查標識),從而避免最后讀取無效的參數(shù),對于可變參數(shù)僅支持int和double兩種類型(參數(shù)未限定類型,故按照舊式聲明理解)以及指針類型;
23.函數(shù)指針是用來在C語言中實現(xiàn)動態(tài)調用的比較有效的方式
24.結構體用作參數(shù)依然是拷貝為形參傳遞,這點與JAVA中全部對象都是類有區(qū)別(類的對象通過引用傳值,C#支持struct),所以對于大的結構體事宜使用指針傳遞,而對于小的結構體拷貝傳值效率并不低;
25.代碼中字符數(shù)組為靜態(tài)常量,對其*作無效,程序塊中數(shù)組的聲明是可以自動回收的,通過malloc/calloc分配的內存為堆內存,需要自行通過free回收;
第2篇:C語言基礎知識小總結
C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。下面是小編給大家分享的C語言基礎知識小總結,快來看看吧。
1.每個C程序有且只有一個主函數(shù)main(),且程序必須從main()函數(shù)開始執(zhí)行,并在main()函數(shù)中結束。
2.在C語言中,用e來表示科學計數(shù)法時,規(guī)定在e的前面必須有數(shù)字,后面必須為整數(shù)。
3.用單引號括起來的一個字符常量只能存放一個字符;C語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。
4.外部變量在編譯時由系統(tǒng)分配永久的內存空間,所以外部變量的類型不是自動存儲類別。
5.在一個函數(shù)內的復合語句中定義的變量,只能在這個復合語句范圍內有效。6.用sizeof(int)計算int類型數(shù)據的字節(jié)數(shù)。
7.C語言運行時,首先系統(tǒng)檢查語法的正誤,再運行程序的語法;C語言中,可以在一個函數(shù)中嵌套一個函數(shù),但是不能在一個函數(shù)中定義一個函數(shù);只有在函數(shù)外部定義的函數(shù)才是外部函數(shù);C語言的子程序有過程和函數(shù)兩種。
8.預處理命令行的位置沒有規(guī)定,只是習慣放在前面;在源文件中的可以有多條預處理命令,但一行只能寫一條;宏名的大寫只是習慣*的表示;宏替換不僅不占用運行時間還不分配內存空間。
9.feof函數(shù)的作用是檢查文件是否結束,當結束時返回的值為非零,否則為零。
10.當定義了數(shù)組后,在給其賦值時,不能直接把字符串賦給數(shù)組名
第3篇:C語言基礎知識點集錦
C語言是近年來使用最為廣泛的編程語言,下面整理了一些C語言基礎知識點,希望對大家有所幫助!
【知識點1】C程序
C語言程序結構有三種:順序結構,循環(huán)結構(三個循環(huán)結構),選擇結構(if和switch)
【知識點2】main函數(shù)
每個C語言程序中main函數(shù)是有且只有一個。讀程序都要從main()入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。
【知識點3】存儲形式
計算機的數(shù)據在電腦中是以二進制的形式保存。最低的存儲單元是bit(位),位是由為0或者1構成。byte是指字節(jié),一個字節(jié)=八個位。數(shù)據存放的位置就是它的地址。
【知識點4】注釋
是對程序的說明,可出現(xiàn)在程序中任意合適的地方,注釋從“”結束,其間任何內容都不會被計算機執(zhí)行,注釋不可以嵌套。
【知識點5】書寫格式
每條語句的后面必須有一個分號,分號是語句的一部分。一行內可寫多條語句,一個語句可寫在多行上。
【知識點6】標識符
合法的用戶標識符考查:
合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。
并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了。
C語言標識符分如下3類
(1)關鍵字。它們在程序中有固定的含義,不能另作他用。如int、for、switch等。
(2)預定義標識符。預先定義并具有特定含義的標識符。如define、include等。
(3)用戶標識符。用戶根據需要定義的標識符,符合命名規(guī)則且不與關鍵字相同。
關鍵字不可以作為用戶標識符號。maindefinescanfprintf都不是關鍵字。迷惑你的地方If是可以做為用戶標識符。因為If中的第一個字母大寫了,所以不是關鍵字。
【知識點7】實型數(shù)據
實型數(shù)據的合法形式:小數(shù)形式和指數(shù)形式。掌握判定指數(shù)形式合法*。
2.333e-1就是合法的,且數(shù)據是2.333×10-1。
考試口訣:e前e后必有數(shù),e后必為整數(shù)。
【知識點8】字符
字符數(shù)據的合法形式::
'1'是字符占一個字節(jié),"1"是字符串占兩個字節(jié)(含有一個結束符號)。
'0'的ASCII數(shù)值表示為48,'a'的ASCII數(shù)值是97,'A'的ASCII數(shù)值是65。
字符型和整數(shù)是近親:
chara=65;
printf(“%c”,a);得到的輸出結果:a
printf(“%d”,a);得到的輸出結果:65
一般考試表示單個字符錯誤的形式:'65'"1"
字符是可以進行算術運算的,記。'0'-0=48
大寫字母和小寫字母轉換的方法:'A'+32='a'相互之間一般是相差32。
【知識點9】整型數(shù)據
整型一般是兩個字節(jié),字符型是一個字節(jié),雙精度一般是4個字節(jié):
考試時候一般會說,在16位編譯系統(tǒng),或者是32位系統(tǒng)。碰到這種情況,不要去管,
一樣做題。掌握整型一般是兩個字節(jié),字符型是一個字節(jié),雙精度一般是4個字節(jié)就可以了。
【知識點10】轉義字符
轉義字符的考查:
在程序中inta=0x6d,是把一個十六進制的數(shù)給變量a注意這里的0x必須存在。
在程序中inta=06d,是一個八進制的形式。
在轉義字符中,’x6d’才是合法的,0不能寫,并且x是小寫。
‘141’是合法的,0是不能寫的。
‘108’是非法的,因為不可以出現(xiàn)8。
【知識點11】算術運算
算術運算符一共有+、—、*、/、%這五個。%符號兩邊要求是整數(shù)。不是整數(shù)就錯了。
三種取整丟小數(shù)的情況:不是四舍五入是舍掉小數(shù)部分。
1、inta=1.6;
2、(int)a;
3、1/2;3/2;
【知識點12】強制類型轉換
將一個運算對象轉換成指定類型,格式為(類型名)表達式
一定是(int)a不是int(a),注意類型上一定有括號的。
注意(int)(a+b)和(int)a+b的區(qū)別。前是把a+b轉型,后是把a轉型再加b。
【知識點13】賦值
是表達式就一定有數(shù)值。
賦值表達式:表達式數(shù)值是最左邊的數(shù)值,a=b=5;該表達式為5,常量不可以賦值。
復合賦值運算符:注意:a*=m+2是a=a*(m+2)
自加、自減表達式:假設a=5,++a(表達式的值為6),a++(表達式的值為5);
j=a++;等價于j=a;a=a+1;而j=++a;等價于a=a+1;j=a;。
考試口訣:++在前先加后用,++在后先用后加。
【知識點14】逗號運算
逗號表達式:優(yōu)先級別最低;表達式的數(shù)值逗號最右邊的那個表達式的數(shù)值。
(2,3,4)的表達式的數(shù)值就是4。
【知識點15】數(shù)制轉換
一定要記住二進制如何轉換成十進制。
八進制是沒有8的,逢8進1,018的數(shù)值是非法的。
版權聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 yyfangchan@163.com (舉報時請帶上具體的網址) 舉報,一經查實,本站將立刻刪除