2017計算機二級C語言考點解析
大家在備考計算機二級考試時要掌握考點,這樣複習才有方向,以下是本站小編整理的計算機二級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.二維數組的引用:二維數組的元素可以表示為:
數組[下標][下標]
在引用二維數組時,必須是單個元素,不能是整個數組名。下標可以是一個表達式,但不能是變量。如果下標是一個表達式,注意表達式的值不能超出數組定義的上、下限。
-
C語言如何提高程序效率
好的代碼沒有一個統一的衡量標準,在程序員們的世界裏大家也是各自按照自己的標準衡量着自己和別人的代碼。不過有一個標準幾乎是被所有人認同的。服役時間越長、出錯率越高的代碼就是好代碼。所有的編程方法、代碼技巧甚至於設計模式都是為了達到這個目的而產生...
-
C語言與JAVA的區別
很多人不明白C語言與C++和JAVE之間的區別,為此,為大家收集整理了下面的內容,歡迎閲讀!C語言C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語...
-
C語言自增(++)和自減(--)
C語言源自KenThompson發明的B語言,那麼大家知道C語言自增(++)和自減(--)是什麼呢?下面一起來看看!一個整數自身加一可以這樣寫:a+=1;它等價於a=a+1;。但是在C語言中還有一種更簡單的寫法,就是a++;或者++a;。這種寫法叫做自加或自增;意思很明確,就是自身加一。相應...
-
C語言轉義字符和格式控制符參考
導語:字符型常量所表示的值是字符型變量所能包含的值。我們可以用ASCII表達式來表示一個字符型常量,或者用單引號內加反斜槓表示轉義字符。下面是C語言轉義字符和格式控制符參考,歡迎學習:轉義字符參考:a:蜂鳴,響鈴:回退:向後退一格f:換頁:換行,光標到下行行首:回車,光...