- 相關推薦
C語言重要考點分析
有人說:好好學習,天天向上,的確,我們是應該這么做,作為一個中小學生的感受來理解學習,我們大概都認為學習不好玩,讀書的都是書呆子,但是等到知道學習能干什么時,大家也就都會恍然大悟了,因為學習能使我們學習到更多的知識,用知識來充實自己。以下是小編為大家搜索整理了C語言重要考點分析,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
第1章 程序設計基本概念考點歸納
1.1 C語言的特點
C語言是近年來非常流行的語言,很多人寧愿放棄已經熟悉的其他語言而改用C語言,其原因是C語言有優于其他語言的一系列特點。下面是C語言的主要特點:
(1)語言簡潔、緊湊,并且使用方便、靈活;
(2)運算符豐富;
(3)數據結構豐富;
(4)具有結構化的控制語句;
(5)語法限制不太嚴格,使程序設計比較自由;
(6)C語言允許用戶直接訪問物理地址,能進行位(bit)操作,可以直接對硬件進行操作。
1.2 源程序的書寫規則
C語言的書寫規則。C語言書寫格式自由,一行內可以寫幾個語句,一個語句也可以分寫在多行上。C程序沒有行號,每個語句和數據定義的最后必須有一個分號。C語言中分號是語句中不可少的,即使是程序中的最后一個語句也應該包含分號。C語言中的注釋可以用″/*″用″*/″結束,注釋可以在任何允許插入空格符地方插入。C語言中注釋不允許嵌套,注釋可以用西文,也可以用中文。
1.3 C語言的風格
由于C語言對語法限制不太嚴格,為了保證程序的準確性和可讀性,建議在書寫程序采用階梯縮進格式。也就是按如下格式書寫C語言程序:
**********;
*****()
{
**********;
********;
{
******;
……
}
*********;
}
概括起來,C語言程序具有如下的風格:
①C語言程序的函數具體模塊結構風格,使得程序整體結構清晰、層次清楚,為模塊化程序設計提供了強有力的支持。
②C語言的源程序的擴展名都是.C。
③C語言中的注釋格式為:
/*注釋內容*/
/與*之間不允許有空格,注釋部分允許出現在程序中的任何位置。
④C語言中的所有語句都必須以分號“;”結束。
第2章 C程序設計的初步知識考點歸納
2.1 程序的構成
盡管C程序的內容千變萬化,但是它們的構成都是一致的,一個完整的C源程序的格式可以如下表示:
編譯預處理
主函數()
函數()
.
.
.
函數()
從上面中可以看出,一個C源程序實際上就是若干函數的集合,這些函數中有一個是程序的主函數,任何C的源程序執行時,都是從主函數開始執行的,其它的函數最終必將被這個主函數所調用。C語言除了主函數規定必須取名
main外,其它的函數名可以任取,但是要符合C的標識符取名規則,另外注意不要與保留字重名,最好也不可與C語言中的庫函數或其它一些命令如編譯預處另命令重名。各個函數在程序中所處的位置并不是固定的,但要求一個函數是完整的、獨立的。不允許出現在一個函數內部又去定義另一個函數,或是函數格式不齊全的現象。一個完整的一般意義上的函數有一個固定的框架,編寫具體的函數時,只需在這個框架中填入相應的內容即可。框架如下:
函數類型 函數名(形參)
形參說明
{
內部變量說明;
執行語句部分;
}
2.2 C語言的基本詞法
C語言的基本詞法由三部分組成:符號集、關鍵字、保留字。
符號集就是一門語言中允許出現的字符的集合,C語言的符號集就是ASCⅡ碼表中的一些字符,在鍵盤上不能直接得到(比如說響鈴字符),C語言引入了轉義字符的概念,利用反斜杠符號″\″后加上字母的一個字符組合來表示這些字符,當在源程序中遇到這類字符組合時,雖然這個字符組合是一個字符串的形式,但C語言仍會自動將之理解成某一特定的字符。比如″\″,C語言在處理這個字符組合時,會自動理解成回車換行符號。轉義字符經過進一步引申應用,形成了另外兩種形式:″\ddd″和″\xnn″,這里″\″后的ddd和xnn分別代表三位八進制和兩位十六進制數(打頭的″x″只是標明后面跟著的是十六進制數),這兩種形式不再局限于表示不可打印的字符,它們可以表示ASCⅡ碼表中的任意字符,只要把所需表示的字符的ASCII碼轉換成八進制數或十六進制數即可。比如說字母″A″,ASCII碼為65,65的八進制和十六進制分別為101和x41,所以,字母A可表示為″\101″或″\x41″,對轉義字符應認真理解。
標識符就是用以標識的符號。正如現實生活中給每一個人都取一個名字一樣,C語言中的每一個對象(如函數、變量等)都必須取一個標識符以和其它對象區別開。在C語言中,這個標識符是一個字符串,這個字符串的選定有一定的規則:必須是以字母或下劃線開頭的字母與數字的序列。除了這個基本的規則外,C語言對標識符的命名還有幾個限制需加以注意:①長度最好不要超過八個字符。因C中對標識符只處理前8個字符,超過8個長度的部分將被C自動忽略掉。″ABCDEFGH1″和″ABCDEFH2″是同一個標識符;②標識符不要與保留字同名,最好也不要與C提供的標準標識符,如庫函數重名;③應注意C語言對大小寫字母是敏感的,Abcd和abcd是兩個不同的標識符。
關鍵字實際上就是一些特殊的標識符,又稱保留字,這些保留字不允許用戶對它重新定義。
2.3 頭文件、數據說明、函數的開始和結束標志
1.頭文件:也稱為包含文件或標題文件,一般放在一個C語言程序的開頭,用#include″文件名″的格式,其中文件名是頭文件名,一般用.h作為擴展名。
2.數據說明:C語言中的數據分常量和變量兩種。
3.常量:有數值常量和符號常量兩種。
4.數值常量:可以分為整型常量、實型常量、浮點型常量和字符常量。
5.符號常量:用一個標識符代表的一個常量,又稱標識符形式的常量。
6.變量:其值可以改變的量,變量名習慣上用小寫字母表示。
7.標識符:用來標識變量名、符號常量名、函數名、數組名、類型名、文件名的有效字符序列。
8.標識符的命名規則:C語言中標識符只能由字母、數字下劃線三種字符組成,且第一個字符必須為字母或下劃線。C語言是大小寫敏感語言,即對大小寫字母認為是不同的字符。C語言中標識符的長度隨系統不同而字,如TURBO C中取前8個字符,8個字符后面的字符會自動取消。
2.4 數據類型
C語言的數據類型可以分為三類:
基本類型 構造類型〖〗派生類型
整型int
字符型char
實型(浮點型)float
雙精度型double
空類型void 結構體struct
公用(聯合)體union
枚舉型enum
用戶定義類型(使用關鍵字typedef) 數組類型
指針類型
1.整型常量:C語言中的整型常量有三種形式:十進制整型常量、八進制整型常量和十六進制整型常量。十進制整型常量可以用一串連續的十進制數字來表示;八進制整型常量用數字0開頭(注意:不是字母O),后面可以跟一串合法的八進制數字;十六進制整型常量用0x或0X開頭,后面可以跟一串合法的十六進制數字。
整型常量又有短整型(short int)、基本整型(int)、長整型(long int)和無符號型(unsinged)之分。
2.整型變量:整型變量也可以分為基本型、短整型、長整型和無符號型四種。分別用int,short int(或short),long int(或long),unsigned int(unsigned
short,unsigned long)對它們進行定義。
3.實型常量:C語言中的實型常量有兩種表示形式:十進制數形式和指數形式。在用指數形式表示實型數據時,字母E可以用小寫e代替,指數部分必須是整數(若為正整數時,可以省略″+″號)。
4.實型變量:C語言中的實型變量分為兩種:單精度類型和雙精度類型,分別用保留關鍵字float和double進行定義。在一般系統中,一個float型數據在內存中占4個字節;一個double型數據占8個字節(一個long double型數據占16個字節)。
5.字符常量:C語言的字符常量代表ASCⅡ碼字符集里的一個字符,在程序中要單引號括起來。C語言規定字符常量可以作為整數常量來處理(注:這里的整數常量指的是相應字符的ASCⅡ代碼,因此字符常量可以參與算術運算)。 在C語言中還有一類特殊形式的字符常量,稱為″轉義字符″。這類字符常量是以一個反斜杠開頭的字符序列,但它們只代表某個特定的ASCⅡ碼字符,在程序中使用這種常量時要括在一對單引號中。
6.字符變量:C語言中的字符變量用關鍵字char來定義,每個字符變量中只能存放一個字符。在一般系統中,一個字符變量在計算機內存中占一個字節。與字符常量一樣,字符變量也可以出現在任何允許整型變量參與的運算中。
7.字符串常量:C語言中的字符串常量是由一對雙引號括起來的字符序列。注意不要將字符常量和字符串常量混淆。C語言對字符串常量的長度不加限制,C編譯程序總是自動地在字符串的結尾加一個轉義字符?\0?,作為字符串常量的結束標志。C語言中沒有專門的字符串變量,如果要把字符串存放在變量中,則要用一個字符型數組來實現。
第3章 順序結構考點歸納
3.1 表達式語句、函數調用語句和空語句
1.C語言的語句共分五大類:表達式語句、控制語句、函數調用語句、空語句和復合語句。
2.表達式語句的一般形式為
表達式;
最典型的表達式語句是由一個賦值表達式加一個分號構成的賦值語句。
3.控制語句是C語言程序設計中用來構成分支結構和循環結構的語句。此類語句有if語句,for語句,while語句,do-while語句,switch語句等。
4.函數調用語句的一般形式為
函數名(實參表);
5.空語句的一般形式為
;
這條語句的含義是什么也不做。凡是在C語句程序中出現語句的地方都可以用一個分號來代替一條語句。
6.復合語句的一般形式為
{語句1;語句2;…;}
復合語句在功能上相當于一條語句。
3.2 數據的輸入與輸出,輸入輸出函數的調用
1.C語言本身沒有提供輸入、輸出操作語句。C程序的輸入和輸出完全依靠調用C語言的標準輸入、輸出函數來完成。四個常用的輸入、輸出函數是: printf函數、scanf函數、putchar函數、getchar函數
2.printf函數是C語言提供的標準輸出函數,它的作用是在終端設備(或系統隱含指定的輸出設備)上按指定格式進行輸出。Printf函數的一般調用形式如下: printf(格式控制,輸出項表)
如果在printf函數調用之后加上″;″,就構成了輸出語句。
格式控制參數以字符串的形式描述,由兩部分組成:
①普通字符:將被簡單地顯示;
②格式字符:將引起一個輸出參數項的轉換和顯示,由“%”引出并以一個類型描述符結束的字符串,中間可加一些可選的附加說明項,如下表所示。 附加說明項
附加說明項
說 明
-或+ 用于指定是否對齊輸出,具有“-”符號表示左對齊,無“-”或有“+”表示右對齊
0 用于指定是否填寫0,有此項表示空位用0補充,無此項表示以空格補充 m.n 用于指定輸出域寬及精度,m是指域寬,n為精度,當指定n時,隱含的精度為6位
L或h 用于輸出長度修正。其中,l對于整型是指long,對實型是double;h只用于整型的格式字符,并修正為short型
格式字符用于指定輸出項的數據類型及輸入格式,如下表所示。
注意:編譯程序只是在檢查了printf函數中的格式參數后,才能確定有幾個輸出項,是什么類型、以什么格式輸出。在編程序時,應使輸出格式與輸出項對應。
格式字符
格式字符
說 明
CcD 輸出一個字符
d或I 輸出帶符號的十進制整型數
OoO 以八進制無符號形式輸出整型數(不帶前導0)
x或X 以十六進制無符號形式輸出整型數(不帶前導0x或0X),對于x,用abcdef輸出十六進制數碼;對于X,用ABCDEF輸出十六進制數碼
UuU 按無符號的八進制形式輸出整型數
FfF 以小數的形式輸出單精度或雙精度數,小數位由精度指定,隱含的精度為6;如指定精度為0,則小數部分(包含小數點)都不輸出
e或E 以指數形式輸出單精度及雙精度數,小數位數由精度指定,隱含的精度為6;如指定精度為0,則小數部分(包含小數點)都不輸出
g或G 由系統決定是采用%f不是采用%e格式,以便使輸出寬度最小 SsS 輸出字符串中的字符,直到遇到″\0″時為止,或輸出指定的字符數 PpP 輸出變量的內存地址
% 打印一個%
3.scanf函數是C語言提供的標準輸入函數,它的作用是在終端設備(或系統隱含指定的輸入設備)上輸入數據。Scanf函數的一般調用形式是:
scanf(格式控制,輸入項表)
如果在scanf函數調用之后加上″;″,就構成了輸入語句。
格式控制是用雙引號括起來的字符串,稱為格式控制串。格式控制串的作用是指定輸入時的數據轉換格式,即格式轉換說明。格式轉換說明是由″%″符號開始,其后是格式描述符。
輸入項表中的各輸入項用逗號隔開,各輸入項只能是合法的地址表達式,即在變量之前加一個地址符號″&″。
在scanf函數中每個格式說明都必須用%開頭,以一個″格式字符″結束。 Scanf函數中的格式控制字符與printf函數中的相似,由格式說明項與輸入格式符組成。格式說明項如下表所示。
格式說明項
格式說明項 說 明
% 起始符
* 賦值抑制符,用于按格式說明讀入數據,但不送給任何變量
MmM 域寬說明
l或h 長度修正說明符
scanf中的格式字符如下表所示。
格式說明項 說 明
CcC 輸入一個字符
DdD 輸入十進制整型數
IiI 輸入整型數,整數可以是帶前導0的八進制數,帶前導0x(或0X)的十六進制數
OoO 以八進制形式輸入整型數(可為帶前導0,也可不帶前導0)
XxX 以十六進制形式輸入整型數(可帶前導0x或0X,也可不帶)
UuU 無符號十進制整數
FfF 以帶小數點形式或指數形式輸入實型數
EeE 與f的作用相同
SsS 輸入字符串
4.putchar函數的作用是把一個字符輸出到標準輸出設備(常指顯示器或打印機)上。一般調用形式為
putchar(ch) ;
其中ch代表一個字符變量或一個整型變量,ch也可以代表一個字符常量(包括轉義字符常量)。
5.getchar函數的作用是標準輸入設備(通常指鍵盤)上讀入一個字符。一般調用形式為
getchar();
getchar函數本身沒有參數,其函數值就是從輸入設備得到的字符。
3.3 復合語句
在C語言中,一對花括號″{}″不僅可以用做函數體的開頭和結尾標志,也可以用做復合語句的開頭和結尾標志。復合語句的形式為:
{
語句1;
語句2;
…;
語句n;
}
3.4 goto語句及語句標號的使用
goto語句稱為無條件轉向語句,一般形式為如下:
goto語句標號;
goto語句的作用是把程序執行轉向語句標號所在的位置,這個語句標號必須與此goto語句同在一個函數內。
語句標號在C語言中不必加以定義,這一點與變量的使用方法不同。標號可以是任意合法的標識符,當在標識符后面加一個冒號,該標識符就成了一個語句標號。
第4章 選擇結構考點歸納
4.1 用if語句實現選擇結構
1.在C語言中,if語句有兩種形式:
形式1:if(表達式) 語句
形式2:if(表達式) 語句1
else 語句2
2.if語句執行時,首先計算緊跟在if后面一對圓括號中的表達式的值,如果表達式的值為非零(″真″),則執行if后的″語句″,然后去執行if語句后的下一個語句。如果表達式的值為零(″假″),直接執行if語句后的下一個語句。
3.if語句后面的表達式并不限于是關系表達式或邏輯表達式,而可以是任意表達式。If語句中可以再嵌套if語句。C語言規定,在嵌套的if語句中,else子句總是與前面最近的不帶else的if相結合。
4.2 用switch語句實現多分支選擇結構
1.switch語句是用來處理多分支選擇的一種語句。它的一般形式如下: switch(表達式)
{ case 常量表達式1:語句1
case 常量表達式2:語句2
:
:
case 常量表達式n:語句n
default :語句n+1
}
2.switch語句的執行過程是:首先計算緊跟switch后面的一對圓括號中的表達式的值,當表達式的值與某一個case后面的常量表達式的值相等時,就執行此case后面的語句體并將流程轉移到下一個case繼續執行,直至switch語句的結束;若所有的case中的常量表達式的值都沒有與表達式值匹配,又存在
default,則執行default后面的語句,直至switch語句結束;如果不存在default,則跳過switch語句體,什么也不做。
4.3 選擇結構的嵌套
if語句和switch語句都可以嵌套使用,特別要注意,對于構成嵌套的if語句,else子句總是和離它最近的、不帶else的if子句相匹配,不能弄混;在一個switch語句中的case后面又嵌套了一個switch語句,在執行內嵌的switch語句后還要執行一條break語句才跳出外層的switch語句。
第5章 循環結構考點歸納
5.1 for循環結構
1.for循環語句的一般表達式是:
for(表達式1;表達式2;表達式3) 語句
2.C語言語法規定:循環體語句只能包含一條語句,若需多條語句,應使用復合語句。
5.2 while和do while循環結構
1.while語句用來實現″當型″循環結構,它的一般形式如下:
while(表達式)語句
當表達式為非0值時執行while語句中內嵌的語句;當表達式的值為0時,直接跳過while語句后面的語句,執行下一條語句。
2.while語句執行的特點是:先判斷表達式,后執行語句。
3.do while用來實現″直到型″循環結構,它的一般形式為:
do語句
while(表達式);
這個語句執行時,先執行一次指定的內嵌的語句,然后判別表達式,當表達式的值為非0時,返回重新執行該語句,如此反復,直到表達式的值為等于0為止,此時循環結束。
4.do while語句執行的特點是:先執行語句,后判斷表達式。
5.3 continue語句和break語句
1.break語句有兩個用途:①在switch語句中用來使流程跳出switch結構,繼續執行switch語句后面的語句;②用在循環體內,迫使所在循環立即終止,即跳出所在循環體,繼續執行循環體后面的第一條語句。
2.continue語句結束本次循環,即跳過循環體中尚未執行的語句。在while和do while語句中,continue語句將使控制直接轉向條件測試部分,從而決定
是否繼續轉向循環。在for循環中,遇到continue語句后,首先計算for語句表達式3的值,然后再執行條件測試(表達式2),最后根據測試結果來決定是否繼續轉向for循環。
5.4 循環的嵌套
1.一個循環體內又包含另一個完整的循環結構,稱為循環的嵌套。內嵌的循環中還可以嵌套循環,這就是多層循環。
2.三種循環(while循環、do while循環和for循環)可以互相嵌套。
第6章 字符型數據考點歸納
6.1 字符常量
有兩種形式:一是用單引號括起來的一個單字符,如′a′,′?′,′=′;二是″轉義字符″,即以″\″開頭的字符序列。常用的轉義字符見下表。
字符形式 功 能
\n 換行
\t 橫向跳格(即跳到下一個輸出區)
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜杠字符″\″
\′ 單引號(撇號)字符
\″ 雙引號(″)字符
\ddd 1到3位8進制數所代表的字符,如\123,表示8進制數123 \xhh 1到2位16進制數所代表的字符,如\x21,表示16進制數23 在轉義字符賦給字符變量時,也需要在其二側加單引號,如:
char c=′\n′;
字符串常量是用一對雙引號括起的字符序列,如″abc\n″。
請區別字符變量和字符串常量。′a′是字符常量,″a″是字符串常量。在內存中,字符常量占一個字節,而對字符串常量,則在字符串的后面加一個″字符串結束標志″,以便系統據此判斷字符串是否結束。用′\0′(即ASCII代碼為0的字符,即″空字符″)作為字符串結束的標志。例如,′a′內存占兩個字節,即:a \0 。
6.2 字符變量
字符變量用來存放一個字符常量,字符變量用char來定義。如:
char a,b;
a=′0′;b=′k′;
printf(″%c %c \n″,a,b);
將輸出兩個字符ok。
不能將一個字符串常量賦給一個字符變量,如:
a=″0″;b=″k″;
是錯誤的。
給字符變量賦值可以采用如下三種方法:
(1)直接賦以字符常量,如char=′A′;
(2)賦以″轉義字符″,如:
char c=′\\′;
printf(″%c″,c);
輸出一個字符″\″。
(3)賦以一個字符的ASCII代碼,如字符′a′的ASCII代碼為97,則
char c=97;
printf(″%c″,c);
將輸出一個字符″a″。實際上,字符數據在內存中是以整數形式(字符ASCII代碼)存放的,例如,字符′a′的ASCII碼為97,在內存字節中的存放形式為: 01 10 00 01
在輸出時,如果指定輸出字符的格式符″%c″輸出,則輸出字符′a′(在輸出時先將ASCII碼轉換為字符)。如果指定按輸出整數的格式″%d″輸出(如printf(″%d″,c)),則輸出一個整數97。
應記住,字符數據與整型數據二者間是通用的,可以互相賦值和運算,如: int a=′A′;
char c=97;
print(″%d\n″,c-a);
將輸出一個整數32,因為′A′的ASCII碼為65。
第7章 函數考點歸納
7.1 庫函數的正確調用
1.C語言提供了豐富的庫函數,包括常用數學函數、對字符和字符串處理函數、輸入輸出處理函數等。在調用庫函數時要注意以下幾點:
(1)調用C語言標準庫函數時必須在源程序中用include命令,include命令的格式是:
#include″頭文件名″
include命令必須以#號開頭,系統提供的頭文件名都以.h作為后綴,頭文件名用一對雙引號″″或一對尖括號〈〉括起來。
(2)標準庫函數的調用形式:
函數名(參數表)
2.在C語言中庫函數的調用可以以兩種形式出現:出現在表達式中;作為獨立的語句完成某種操作。
7.2 函數的定義方法
1.C語言函數的一般形式為:
函數返回值的類型名 函數名(類型名 形參1,類型名 形參2,…)
{
說明部分
語句部分
}
定義的第一行是函數的首部,{}中的是函數體。
2.在老的C語言版本中,函數的首部用以下形式:
函數返回值的類型名 函數名(形參1,形參2…)
形參類型說明;
新的ANSI標準C兼容這種形式的函數首部說明。
3.函數名和形參名是由用戶命名的標識符。在同一程序中,函數名必須唯一。形式參數名只要在同一函數中唯一即可,可以與函數中的變量同名。
4.C語言規定不能在一個函數內部再定義函數。
5.若在函數的首部省略了函數返回值的類型名,把函數的首部寫成: 函數名(類型名 形參1,類型名 形參2,…)
則C默認函數返回值的類型為int類型。
6.當沒有形參時,函數名后面的一對圓括號不能省略。
7.3 函數的類型和返回值
1.函數的類型由函數定義中的函數返回值的類型名確定,函數的類型可以是任何簡單類型,如整型、字符型、指針型、雙精度型等,它指出了函數返回值的具體類型。當函數返回的是整型值時,可以省略函數類型名。當函數只完成特定的操作而沒有或不需要返回值時,可用類型名void(空類型)。
2.函數返回值就是return語句中表達式的值。當程序執行到return語句時,程序的流程就返回到調用該函數的地方(通常稱為退出調用函數),并帶回函數值。
7.4 形式參數與實際參數,參數值的傳遞
1.在函數定義中,出現的參數名稱為形參(形式參數),在調用函數時,使用的參數值稱為實參(實際參數)。
2.調用函數和被調用函數之間的參數值的傳遞是″按值″進行的,即數據只能從實參單向傳遞給形參。也就是說,當簡單變量作為實參時,用戶不能在函數中改變對應實參的值。
7.5 函數的正確調用(嵌套調用,遞歸調用)
1.調用函數時,函數名必須與被調用的函數名字完全一樣。實參的個數與類型和形參的個數與類型一致。
2.C語言規定:函數必須先定義,后調用,也就是被調用函數必須在調用之前加以說明,或被調用函數整個放在調用函數之前。但對返回值類型為int或char類型的函數可以放在調用函數的后面。
3.C語言中函數定義都是互相平行、獨立的,C語言不允許嵌套定義函數,但允許嵌套調用函數,也就是說,在調用一個函數的過程中,又調用另一個函數。
4.在C程序中,調用一個函數的過程中又出現直接或間接地調用該函數本身,稱為函數的遞歸調用。
5.遞歸調用函數是C語言的特點之一,有時遞歸調用會使求解的問題變得更簡單明了。
7.6 局部變量和全局變量
1.局部變量
在一函數內部所定義的變量稱為局部變量,局部變量只在本函數范圍內有效。
注意:
①不同函數可以使用相同的局部變量名,它們將代表不同的對象,互不干擾; ②一個函數的形參也為局部變量;
③在函數內部,復合語句也可定義變量,這些變量也為局部變量,只在此復合語句中有效。
2.全局變量
在C語言中,程序的編譯單位是源程序文件,一個源程序文件中包含一個或多個函數。在函數之外所定義的變量稱為外部變量,也稱為全局變量。全局變
量可以被包含它的源程序文件中的其他函數所共用,作用域為從定義變量的位置開始到源程序文件結束,全局變量可以增加函數之間數據的聯系。
注意:當在同一個源程序文件中,全局變量與局部變量同名時,在局部變量的作用范圍內,全局變量不起作用,局部變量起作用。
第8章 指針考點歸納
8.1 指針與指針變量的概念,指針與地址運算符
1.在C語言中,指針是指一個變量的地址,通過變量的地址″指向″的位置找到變量的值,這種″指向″變量地址可形象地看作″指針″。用來存放指針的變量稱為指針變量,它是一種特殊的變量,它存放的是地址值。
2.定義指針變量的一般形式為:
類型名 *指針變量1,*指針變量2,…;
″類型名″稱為″基類型″它規定了后面的指針變量中存放的數據類型,″*″號表明后面的″指針變量1″,″指針變量2″等是指針變量,″*″號在定義時不能省略,否則就會變成一般變量的定義了。″指針變量1″,″指針變量2″等稱為指針變量名。
3.一個指針變量只能指向同一類型的變量。
4.與指針和指針變量有關的兩個運算符:
(1)*:指針運算符(或稱″間接訪問″運算符)
(2)&:取地址運算符
通過*號可以引用一個存儲單元,如有如下定義:
int i=123,*p,k;
則 p=&I;或k=*p;或k=*&I;都將變量i中的值賦給k。
*p=10;或*&i=10;都能把整數10賦給變量i。這里,等號左邊的表達式*p和*&i都代表變量i的存儲單元。
8.2 變量、數組、字符串、函數、結構體的指針以及指向它們的指針變量
1.變量的指針和指向變量的指針變量。
2.數組的指針和指向數組的指針變量。
所謂數組的指針是指數組的起始地址,數組元素的指針是數組元素的地址。 C語言規定數組名代表數組的首地址,也就是第一個元素的地址。
3.字符串的指針和指向字符串的指針變量。
我們可以通過定義說明一個指針指向一個字符串。
C語言將字符串隱含處理成一維字符數組,但數組的每個元素沒有具體的名字,這一點跟字符數組不一樣。要引用字符串中的某個字符,只能通過指針來引用:*(s+0),*(s+1),…,*(s+n)。
4.函數的指針和指向函數的指針變量。
指向函數的指針變量的一般形式為 :
數據類型標識符 (*指針變量名)();
這里的″數據類型標識符″是指函數返回值的類型。
函數的調用可以通過函數名調用,也可以通過函數指針調用(即用指向函數的指針變量調用)。
指向函數的指針變量表示定義了一個指向函數的指針變量,它不是固定指向哪一個函數,而只是定義了這樣的一個類型變量,它專門用來存放函數的入口地址。在程序中把哪一個函數的地址賦給它,它就指向哪一個函數。在一個程序中,一個指針變量可以先后指向不同的函數。
在給函數指針變量賦值時,只需給出函數名而不必給出參數。因為函數指針賦的值僅是函數的入口地址,而不涉及到實參與形參的結合問題。
對指向函數的指針變量,表達式p+n,p++,p--等都無意義。
5.結構體的指針與指向結構體的指針變量
一個結構體變量的指針就是該變量所占據的內存段的起始地址。可以設一個指針變量,用來指向一個結構體變量,此時該指針變量的值是結構體變量的起始地址。指針變量也可以用來指向結構體數組中的元素。
8.3 用指針做函數參數
函數的參數不僅可以是整型、實型、字符型等數據,還可以是指針類型,它的作用是將一個變量的地址傳送到另一個函數中。
8.4 返回指針值的指針函數
一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型數據 ,即地址這種帶回指針值的函數,一般的定義形式為:
類型標識符 *函數名(形參表);
8.5 指針數組、指向指針的指針
1.指針數組指的是一個數組,其元素均為指針類型數據,也就是說,指針數組中的每一個元素都是指針變量。指針數組的定義形式為:
類型標識 *數組名[數組長度說明]
指針數組可以使字符串處理更加方便。
2.指向指針的指針是指指向指針數據的指針變量,一個指向指針數據的指針變量的一般形式為:
類型標識 * *p;
8.6 main函數的命令參數
指針數組的一個重要應用是作為main函數的形參,一般來說,main函數后的括號中是空的,即沒有參數。實際上main可以有參數,如:
main(argc,argv)
其中,argc和argv就是main函數的形參。其他函數形參的值可以通過函數調用語句的實參中得到,由于main函數是由系統調用的,因而main函數的形參值不能從程序中得到,但可以在操作系統狀態下,將實參和命令一起給出,從而使main函數的形參得到值。命令行的一般形式為:
命令名 參數1 參數2…參數n
命令名和各參數之間用空格分隔開。
8.7 動態存儲分配
在C語言中有一種稱為“動態存儲分配”的內存空間分配方式:程序在執行期間需要存儲空間時,通過“申請”分配指定的內存空間;當閑置不用時,可隨時將其釋放,由系統另作它用。本節介紹C語言中動態分配系統的主要函數:malloc()、calloc()、free()及realloc(),使用這些函數時,必須在程序開頭包含文件stdlib.h。
1.主內存分配函數—malloc()
函數格式:void*malloc(unsigned size);
函數功能:從內存中分配一大小為size字節的塊。
參數說明:size為無符號整型,用于指定需要分配的內存空間的字節數。 返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。 說明:當size為0時,返回NULL。
2.主內存分配函數——calloc()
函數格式:void*malloc(unsigned n,unsigned size);
函數功能:從內存中分配n個同一類型數據項的連續存儲空間,每個數據項的大小為size字節。
參數說明:n為無符號整型,用于指定分配的數據項的個數size為無符號整型,用于指定需要分配的數據項所占內存空間的字節數。
返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。
3.重新分配內存空間函數——realloc()
函數格式:void*realloc(void *block,unsigned size);
函數功能:將block所指內存區的大小改為size字節的塊。
參數說明:block為void類型的指針,指向內存中某塊,size為無符號整型,用于指定需要分配的內存空間的字節數。
返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。
4.釋放內存函數—free()
函數格式:void free(void*block);
函數功能:將calloc()、malloc()及realloc()函數所分配的內存空間釋放為自由空間。
參數說明:block為void類型的指針,指向要釋放的內存空間。
返回值:無。
第9章 數組考點歸納
9.1 一維數組的定義、初始化和引用
1.一維數組的定義方式為:
類型說明符 數組名[常量表達式]
(1)數組名的命名方法與變量名相同,遵循標識符命名規則;
(2)數組是用方括號括起來的常量表達式,不能用圓括號;
(3)常量表達式表示數組元素的個數,即數組的長度,數組的下標從0開始,下標的最大值為:常量表達式-1;
(4)常量表達式中可以包括常量和符號常量,不能包括變量。
可以用賦值語句或輸入語句使數組中的元素得到值,但要占用運行時間。可以使數組在運行之前初始化,即在編譯階段使之得到初值。
2.對數組初始化可以用以下方法實現:
(1)在定義數組時對數組元素賦以初值。如:
static int a[10]={0,1,2,3,4,5,6,7,8,9};
經過上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
(2)初始化時可以只對一部分元素賦初值。例如:
static int a[10]={0,1,2,3,4};
定義的數組有10個元素,但只對其中前5個元素賦了初值,后5個元素初值為0。
(3)如果想使一個數組的元素值全部為0,可以用下面的方法:
static int a[10]={0,0,0,0,0,0,0,0,0,0};
不能用:
static int a[10]={0*10};
如果對static型數組不賦初值,系統會對定義的所有數組元素自動賦以0值。
(4)在對全部數組元素賦初值時,可以不指定數組長度。
3.一維數組的引用方法是:
C語言規定不能一次引用整個數組,引用時只能逐個元素引用,數組元素的表示形式為:
數組名[下標]
下標可以是整型常量或整型表達式。如:
a[0]=a[5]+a[7]-a[2*3];
9.2 二維數組的定義、初始化和引用
1.二維數組定義的一般形式為
類型說明符 數組名[常量表達式][常量表達式]
C語言采用上述定義方法,我們可以把二維數組看做是一種特殊的一維數組:它的元素又是一維數組。在C語言中,二維數組中元素的排列順序是:先按行存放,再按列存放,即在內存中先順序存放第一行的元素,再存放第二行的元素。
2.二維數組的初始化:二維數組可以用下面的方法初始化:
(1)分行給二維數組賦初值。如:
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
以上賦值把第一個花括號內的數據賦給第一行元素,第二個花括號內數據賦給第二元素…,即按行賦值。
(2)可以將所有的數據寫在一個花括號內,按數組排列的順序對各元素賦值。
(3)可以對數組的部分元素賦初值。如:
static int a[3][4]={{1},{5},{9}};
以上賦值的結果是:數組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。
(4)如果對二維數組的全部元素都賦初值,則定義數組時對第一維的長度可以不指定,但第二維的長度不能省。
3.二維數組的引用:二維數組的元素可以表示為:
數組[下標][下標]
在引用二維數組時,必須是單個元素,不能是整個數組名。下標可以是一個表達式,但不能是變量。如果下標是一個表達式,注意表達式的值不能超出數組定義的上、下限。
第10章 字符串考點歸納
10.1 字符串與字符數組
1.字符數組的定義
定義方法與前面介紹的類似,只是將數組定義為字符型即可。例如: char c[10];
這里定義了一個包含10個元素的字符數組c。
2.字符數組的初始化
對字符數組初始化,可以采用以下方法:
(1)逐個字符賦給數組中各元素;
(2)用字符串常量使字符數組初始化。
3.字符串
在C語言中,字符串是作為字符數組來處理的,字符串可以存放在字符型一維數組中,故可以把字符型一維數組作為字符串變量。
字符串常量是用雙引號括起來的一串字符。
C語言中約定用′\0′作為字符串的結束標志,它占內存空間,但不計入串的長度,′\0′的代碼值為0。
系統對字符串常量也自動加一個′\0′作為結束符。例如″c language″共有10個字符,但在內存中占11個字節,最后一個字節存放′\0′。
4.字符數組的輸入輸出
(1)逐個字符輸入和輸出
①在標準輸入輸出printf和scanf中使用%c格式描述符;
②使用getchar和putchar函數。例如:
for(i=0;i<10;i++)
scanf(″%c″,&str[i]); /*或str[i]=getchar();*/
str[i]=′\0′;/*人為加上串結束標志*/
for(i=0;i<10;i++)
printf(″%c″,str[i]);/*或putchar(str[i]);*/
(2)字符串整體輸入輸出
①在標準輸入輸出函數printf和scanf中使用%s格式描述符;
輸入形式:
char str[6];
scanf(″%s″,str);
其中 str為字符數組名,代表著str字符數組的起始地址,輸入時系統自動在每個字符串后加入結束符′\0′。若同時輸入多個字符串,則以空格或回車符分隔。
輸入形式:
printf(″%s″,str);
輸字符串時,遇第一個′\0′即結束。但可人為控制輸出串所占的域寬如: printf(″%6s″,str);/*若字符串中字符多于6個,仍將全部輸出*/
printf(″%-6s″,str);/*只輸出前6個字符,多余的不輸出*/
②使用gets和puts函數輸入輸出一行
gets函數用來從終端鍵盤讀字符,直到遇換行符為止,換行符不屬字符串的內容。
調用形式:
gets(str);
str為字符數組名或字符指針,字符串輸入后,系統自動將′\0′置于串尾代替換行符。若輸入串長超出數組定義長度時,系統報錯。
Puts函數用來把字符串的內容顯示在屏幕上。
調用形式:
puts(str);
str的含義同上。輸出時,遇到第一個′\0′結束并自動換行,字符串中可以含轉義字符。
10.2 字符串的指針以及指向字符串的指針變量
1.用指針方法實現一個字符串的存儲和運算
如:
char * strp=″china″;
此處定義了一個字符指針變量strp,變量中存放的是字符串第一個字符的地址。
C語言對字符串常量是按字符數組處理的,它實際上在內存開辟了一個字符數組用來存放字符串變量,并把字符串首地址賦給字符指針變量strp。
在輸出時用
printf(″%s\n″,strp);
通過字符數組名或字符指針變量可以輸出一個字符串。而對一個數值型數組,是不能企圖用數組名輸出它的全部元素的。
2.字符指針變量與字符數組
雖然用字符數組和字符指針變量都能實現字符串的存儲和運算,但它們二者之間是有區別的,不應混為一談,主要有以下幾點:
(1)字符數組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的是地址(字符串的首地址),決不是將字符串放到字符指針變量中。
(2)對字符數組只能對各個元素賦值,不能用以下辦法對字符數組賦值。 Char str[
14];
str=″I love China!″;
而對字符指針變量,可以采用下面方法賦值:
char *a;
a=″I love China!″;
但注意賦給a的不是字符,而是字符串的首地址。
(3)賦初值時,對以下的變量定義和賦初值:
char *a=″I love China!″;
等價于:
char *a;
a=″I love China!″;
而對數組初始化時:
static char str[14]={″I love China!″};
不能等價于
char str[14];
str[]={″I love China!″};
即數組可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。
(4)在定義一個數組時,在編譯時即已分配內存單元,有確定的地址。而定義一個字符指針變量時,給指針變量分配內存單元,在其中可以放一個地址值,就是說,該指針變量可以指向一個字符型數據,但如果未對它賦予一個地址值,這時該指針變量并未具體指向哪一個字符數據。
(5)指針變量的值是可以改變的。
3.字符串處理函數
C語言中沒有對字符串進行合并、比較和賦值的運算符,但幾乎所有版本的C語言中都提供了有關的庫函數。例如:
(1)strcat函數:連接兩個字符數組中的字符串
(2)strcpy函數:字符拷貝函數
(3)strcmp函數:字符比較函數
(4)strlen函數:測試字符串長度的函數
(5)strlwr函數:將字符串中大寫字母轉換成小寫字母
(6)strupr函數:將字符中小寫字母轉換成大寫字母
第10章 結構體與共用體
【考點1】結構體類型的說明
結構體是若干個類型數據的集合,結構體類型說明格式如下:struct 類型名 {類型1 成員名1;類型2 成員名2;……};,以上整個部分是一個數據類型,與整型的int是同樣地位。可用typedef把結構體類型替換成一個只有幾個字母的簡短標識符。
【考點2】結構體變量的定義
結構體變量是用說明的結構體類型所定義的一個變量,與結構體類型不是一回事。一個結構體變量所占字節數為其所有成員所占字節數之和。如struct stu{char name[10];int age;} a,b;則表明定義了兩個結構體變量a,b,每個變量占14個字節。a,b與int i,j;中的變量i,j是同樣地位。
【考點3】結構體成員的引用
引用成員可用以下3種方式:(1)結構體變量名.成員名;(2)指針變量名->成員名:(3)(*指針變量名).成員名。點(.)稱為成員運算符,箭頭(->)稱為結構指向運算符。
【考點4】鏈表
鏈表是由一個個結點構成的,一個結點就是一個結構體變量。每個結點可以分為數據域與指針域兩個部分,數據域用來存放要存儲的數據,指針域用來指向下一個結點。鏈表是考試中的難點,在C語言和公共基礎部分都會考到,要領悟掌握。
【考點5】共用體
共用體的使用格式與結構體相似,共用體定義的關鍵字為union,共用體所占字節數是所有成員中字節數最大的那個。
第11章 文件
【考點1】文件類型指針
文件指針是一個指向結構體類型的指針,定義格式為:FILE *指針變量名。在使用文件時,都需要先定義文件指針。
【考點2】文本文件與二進制文件
文本形式存放的是字符的ASCII碼,二進制形式存放的是數據的二進制。例如“100”如果是文本形式就是存儲?1?、 ?0?、 ?0?三個字符的ASCII碼(00110001 00110000 00110000),如果是二進制形式就把100轉化成二進制(01100100)。
【考點3】打開文件
文件的打開形式如下:FILE *fp; fp=fopen(“c:\\lab.c”,”rb”);。fopen函數的前面一部分為文件名,后面一部分為文件的使用方式。打開方式詳見教材第127頁,其中r代表讀,w代表寫,a代表添加,b代表二進制位的。
【考點4】文件函數
判斷文件結束feof函數,移動文件指針位置fseek函數,獲得文件位置ftell函數,文件位置移到開頭rewind函數,文件字符輸入輸出fgetc函數和fputc函數,文件輸入輸出fscanf函數和fprintf函數,文件字符串輸入輸出fgets函數和fputs函數,讀寫二進制文件fread函數和fwrite函數。
以上函數要求知道格式會用,清楚是用于二進制文件還是文本文件,要把教材文件這章仔細復習下,不要在考試的時候把這些文件函數搞混了。
【C語言重要考點分析】相關文章:
C語言考點精選06-29
C語言考點習題06-19
C語言考點輔導09-16
C語言控制語句考點09-18
計算機二級《C語言》重要考點復習05-07
2016計算機二級《C語言》章節重要考點10-10
C語言考點題型練習05-10
C語言中的幾個重要概念06-17
C語言的宏定義分析09-10