當前位置:才華齋>計算機>C語言>

計算機二級考試C語言知識點2017

C語言 閱讀(1.5W)

C語言的學習中,掌握好每個知識點有助於學好C語言。下面是小編整理的計算機二級考試C語言知識點,歡迎閱讀!

計算機二級考試C語言知識點2017

  知識點(一)列舉

在實際問題中, 有些變數的取值被限定在一個有限的範圍內。例如,一個星期內只有七天,一年只有十二個月,

一個班每週有六門課程等等。如果把這些量說明為整型, 字元型或其它型別顯然是不妥當的。 為此,C語言提供了

一種稱為“列舉”的型別。在“列舉”型別的定義中列舉出所有可能的取值, 被說明為該“列舉”型別的變數取值不

能超過定義的範圍。應該說明的是, 列舉型別是一種基本資料型別,而不是一種構造型別, 因為它不能再分解為任

何基本型別。

  知識點(二)指標變數的運算

(1)賦值運算

指標變數的賦值運算有以下幾種形式:

①指標變數初始化賦值,前面已作介紹。

②把一個變數的地址賦予指向相同資料型別的指標變數。例如:

int a,*pa;

pa=&a; /*把整型變數 a的地址賦予整型指標變數 pa*/

③把一個指標變數的值賦予指向相同型別變數的另一個指標變數。如:

int a,*pa=&a,*pb;

pb=pa; /*把 a的地址賦予指標變數 pb*/

由於 pa,pb均為指向整型變數的指標變數,因此可以相互賦值。

④把陣列的首地址賦予指向陣列的指標變數。

例如: int a[5],*pa;

pa=a; (陣列名錶示陣列的首地址,故可賦予指向陣列的指標變數pa)

也可寫為:

pa=&a[0]; /*陣列第一個元素的地址也是整個陣列的首地址,

也可賦予 pa*/

當然也可採取初始化賦值的方法:

int a[5],*pa=a;

⑤把字串的首地址賦予指向字元型別的指標變數。例如: char *pc;pc="c language";或用初始化賦值的方法寫為:

char *pc="C Language"; 這裡應說明的是並不是把整個字串裝入指標變數, 而是把存放該字串的字元陣列的首

地址裝入指標變數。 在後面還將詳細介紹。

⑥把函式的入口地址賦予指向函式的指標變數。例如: int (*pf)();pf=f; /*f為函式名*/

(2)加減算術運算

對於指向陣列的指標變數,可以加上或減去一個整數n。設 pa是指向陣列 a的指標變數,則

pa+n,pa-n,pa++,++pa,pa--,--pa 運算都是合法的。指標變數加或減一個整數 n的意義是把指標指向的當前位置(指向

某陣列元素)向前或向後移動 n個位置。應該注意,陣列指標變數向前或向後移動一個位置和地址加1或減1 在概念

上是不同的。因為陣列可以有不同的型別,各種型別的陣列元素所佔的位元組長度是不同的。如指標變數加1,即向後

移動1 個位置表示指標變數指向下一個資料元素的首地址。而不是在原地址基礎上加1。

例如:

int a[5],*pa;

pa=a; /*pa指向陣列a,也是指向 a[0]*/

pa=pa+2; /*pa指向a[2],即pa的`值為&pa[2]*/ 指標變數的加減運算只能對陣列指標變數進行,對指向其它型別變

量的指標變數作加減運算是毫無意義的。(3)兩個指標變數之間的運算只有指向同一陣列的兩個指標變數之間才能進行

運算, 否則運算毫無意義。

  知識點(三)指標變數的賦值

指標變數同普通變數一樣,使用之前不僅要定義說明, 而且必須賦予具體的值。未經賦值的指標變數不能使用,

否則將造成系統混亂,甚至宕機。指標變數的賦值只能賦予地址,決不能賦予任何其它資料,否則將引起錯誤。在C

語言中, 變數的地址是由編譯系統分配的,對使用者完全透明,使用者不知道變數的具體地址。 C語言中提供了地址運

算符&來表示變數的地址。其一般形式為:& 變數名;如&a變示變數 a的地址,&b表示變數 b的地址。變數本身必

須預先說明。設有指向整型變數的指標變數 p,如要把整型變數a 的地址賦予 p可以有以下兩種方式:

(1)指標變數初始化的方法 int a;

int *p=&a;

(2)賦值語句的方法 int a;

int *p;

p=&a;

不允許把一個數賦予指標變數,故下面的賦值是錯誤的: int*p;p=1000; 被賦值的指標變數前不能再加“*”說明符,

如寫為*p=&a 也是錯誤的

  知識點(四)靜態全域性變數

全域性變數(外部變數)的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式, 靜

態全域性變數當然也是靜態儲存方式。 這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是

整個源程式, 當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。 而靜態全域性變數

則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性

變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用, 因此可以避免在其它原始檔中引起錯誤。從以上

分析可以看出,把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生存期。把全域性變數改變為靜態變

量後是改變了它的作用域, 限制了它

的使用範圍。因此static 這個說明符在不同的地方所起的作用是不同的。應予以注意。