C語言

當前位置 /首頁/計算機/C語言/列表

2017計算機二級C語言考點解析

大家在備考計算機二級考試時要掌握考點,這樣複習才有方向,以下是本站小編整理的計算機二級C語言考點解析,更多計算機二級考試資訊請繼續關注應屆畢業生考試網。

2017計算機二級C語言考點解析

  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.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.二維陣列的引用:二維陣列的元素可以表示為:

陣列[下標][下標]

在引用二維陣列時,必須是單個元素,不能是整個陣列名。下標可以是一個表示式,但不能是變數。如果下標是一個表示式,注意表示式的值不能超出陣列定義的上、下限。