射精一区欧美专区|国产精品66xx|亚洲视频一区导航|日韩欧美人妻精品中文|超碰婷婷xxnx|日韩无码综合激情|特级黄片一区二区|四虎日韩成人A√|久久精品内谢片|亚洲成a人无码电影

您現(xiàn)在的位置:首頁 > IT認證 > 計算機二級考試 >

計算機二級C語言指針考點歸納


第8章 指針考點歸納

  8.1 指針與指針變量的概念,指針與地址運算符

  1.在C語言中,指針是指一個變量的地址,通過變量的地址″指向″的位置找到變量的值,這種″指向″變量地址可形象地看作″指針″。用來存放指針的變量稱為指針變量,它是一種特殊的變量,它存放的是地址值。

  2.定義指針變量的一般形式為:

  類型名 *指針變量1,*指針變量2,…;

  ″類型名″稱為″基類型″它規(guī)定了后面的指針變量中存放的數(shù)據(jù)類型,″*″號表明后面的″指針變量1″,″指針變量2″等是指針變量,″*″號在定義時不能省略,否則就會變成一般變量的定義了!逯羔樧兞1″,″指針變量2″等稱為指針變量名。

  3.一個指針變量只能指向同一類型的變量。

  4.與指針和指針變量有關(guān)的兩個運算符:

  (1)*:指針運算符(或稱″間接訪問″運算符)

  (2)&:取地址運算符

  通過*號可以引用一個存儲單元,如有如下定義:

  int i=123,*p,k;

  則 p=&I;或k=*p;或k=*&I;都將變量i中的值賦給k。

  *p=10;或*&i=10;都能把整數(shù)10賦給變量i。這里,等號左邊的表達式*p和*&i都代表變量i的存儲單元。

  8.2 變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向它們的指針變量

  1.變量的指針和指向變量的指針變量。

  2.數(shù)組的指針和指向數(shù)組的指針變量。

  所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的指針是數(shù)組元素的地址。

  C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。

  3.字符串的指針和指向字符串的指針變量。

  我們可以通過定義說明一個指針指向一個字符串。

  C語言將字符串隱含處理成一維字符數(shù)組,但數(shù)組的每個元素沒有具體的名字,這一點跟字符數(shù)組不一樣。要引用字符串中的某個字符,只能通過指針來引用:*(s+0),*(s+1),…,*(s+n)。

  4.函數(shù)的指針和指向函數(shù)的指針變量。

  指向函數(shù)的指針變量的一般形式為 :

  數(shù)據(jù)類型標識符 (*指針變量名)();

  這里的″數(shù)據(jù)類型標識符″是指函數(shù)返回值的類型。

  函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用(即用指向函數(shù)的指針變量調(diào)用)。

  指向函數(shù)的指針變量表示定義了一個指向函數(shù)的指針變量,它不是固定指向哪一個函數(shù),而只是定義了這樣的一個類型變量,它專門用來存放函數(shù)的入口地址。在程序中把哪一個函數(shù)的地址賦給它,它就指向哪一個函數(shù)。在一個程序中,一個指針變量可以先后指向不同的函數(shù)。

  在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。因為函數(shù)指針賦的值僅是函數(shù)的入口地址,而不涉及到實參與形參的結(jié)合問題。

  對指向函數(shù)的指針變量,表達式p+n,p++,p--等都無意義。

  5.結(jié)構(gòu)體的指針與指向結(jié)構(gòu)體的指針變量

  一個結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址?梢栽O(shè)一個指針變量,用來指向一個結(jié)構(gòu)體變量,此時該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。

  8.3 用指針做函數(shù)參數(shù)

  函數(shù)的參數(shù)不僅可以是整型、實型、字符型等數(shù)據(jù),還可以是指針類型,它的作用是將一個變量的地址傳送到另一個函數(shù)中。

  8.4 返回指針值的指針函數(shù)

  一個函數(shù)可以返回一個整型值、字符值、實型值等,也可以返回指針型數(shù)據(jù) ,即地址這種帶回指針值的函數(shù),一般的定義形式為:

  類型標識符 *函數(shù)名(形參表);

  8.5 指針數(shù)組、指向指針的指針

  1.指針數(shù)組指的是一個數(shù)組,其元素均為指針類型數(shù)據(jù),也就是說,指針數(shù)組中的每一個元素都是指針變量。指針數(shù)組的定義形式為:

  類型標識 *數(shù)組名[數(shù)組長度說明]

  指針數(shù)組可以使字符串處理更加方便。

  2.指向指針的指針是指指向指針數(shù)據(jù)的指針變量,一個指向指針數(shù)據(jù)的指針變量的一般形式為:

  類型標識 * *p;

  8.6 main函數(shù)的命令參數(shù)

  指針數(shù)組的一個重要應用是作為main函數(shù)的形參,一般來說,main函數(shù)后的括號中是空的,即沒有參數(shù)。實際上main可以有參數(shù),如:

  main(argc,argv)

  其中,argc和argv就是main函數(shù)的形參。其他函數(shù)形參的值可以通過函數(shù)調(diào)用語句的實參中得到,由于main函數(shù)是由系統(tǒng)調(diào)用的,因而main函數(shù)的形參值不能從程序中得到,但可以在操作系統(tǒng)狀態(tài)下,將實參和命令一起給出,從而使main函數(shù)的形參得到值。命令行的一般形式為:

  命令名 參數(shù)1 參數(shù)2…參數(shù)n

  命令名和各參數(shù)之間用空格分隔開。

  8.7 動態(tài)存儲分配

  在C語言中有一種稱為“動態(tài)存儲分配”的內(nèi)存空間分配方式:程序在執(zhí)行期間需要存儲空間時,通過“申請”分配指定的內(nèi)存空間;當閑置不用時,可隨時將其釋放,由系統(tǒng)另作它用。本節(jié)介紹C語言中動態(tài)分配系統(tǒng)的主要函數(shù):malloc()、calloc()、free()及realloc(),使用這些函數(shù)時,必須在程序開頭包含文件stdlib.h。

  1.主內(nèi)存分配函數(shù)—malloc()

  函數(shù)格式:void*malloc(unsigned size);

  函數(shù)功能:從內(nèi)存中分配一大小為size字節(jié)的塊。

  參數(shù)說明:size為無符號整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。

  返回值:新分配內(nèi)存的地址,如無足夠的內(nèi)存可分配,則返回NULL。

  說明:當size為0時,返回NULL。

  2.主內(nèi)存分配函數(shù)——calloc()

  函數(shù)格式:void*malloc(unsigned n,unsigned size);

  函數(shù)功能:從內(nèi)存中分配n個同一類型數(shù)據(jù)項的連續(xù)存儲空間,每個數(shù)據(jù)項的大小為size字節(jié)。

  參數(shù)說明:n為無符號整型,用于指定分配的數(shù)據(jù)項的個數(shù)size為無符號整型,用于指定需要分配的數(shù)據(jù)項所占內(nèi)存空間的字節(jié)數(shù)。

  返回值:新分配內(nèi)存的地址,如無足夠的內(nèi)存可分配,則返回NULL。

  3.重新分配內(nèi)存空間函數(shù)——realloc()

  函數(shù)格式:void*realloc(void *block,unsigned size);

  函數(shù)功能:將block所指內(nèi)存區(qū)的大小改為size字節(jié)的塊。

  參數(shù)說明:block為void類型的指針,指向內(nèi)存中某塊,size為無符號整型,用于指定需要分配的內(nèi)存空間的字節(jié)數(shù)。

  返回值:新分配內(nèi)存的地址,如無足夠的內(nèi)存可分配,則返回NULL。

  4.釋放內(nèi)存函數(shù)—free()

  函數(shù)格式:void free(void*block);

  函數(shù)功能:將calloc()、malloc()及realloc()函數(shù)所分配的內(nèi)存空間釋放為自由空間。

  參數(shù)說明:block為void類型的指針,指向要釋放的內(nèi)存空間。

  返回值:無。

相關(guān)文章

無相關(guān)信息
更新時間2022-03-13 11:03:57【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網(wǎng)站糾錯二維碼手機版

客服電話: