糯米文學吧

位置:首頁 > 計算機 > C語言

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

C語言1.46W

在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 這個説明符在不同的地方所起的作用是不同的。應予以注意。