8.1 指針與指針變量的概念,指針與地址運(yùn)算符
1.在C語言中,指針是指一個(gè)變量的地址,通過變量的地址″指向″的位置找到變量的值,這種″指向″變量地址可形象地看作″指針″。用來存放指針的變量稱為指針變量,它是一種特殊的變量,它存放的是地址值。
2.定義指針變量的一般形式為:
類型名 *指針變量1,*指針變量2,…;
″類型名″稱為″基類型″它規(guī)定了后面的指針變量中存放的數(shù)據(jù)類型,″*″號(hào)表明后面的″指針變量1″,″指針變量2″等是指針變量,″*″號(hào)在定義時(shí)不能省略,否則就會(huì)變成一般變量的定義了!逯羔樧兞1″,″指針變量2″等稱為指針變量名。
3.一個(gè)指針變量只能指向同一類型的變量。
4.與指針和指針變量有關(guān)的兩個(gè)運(yùn)算符:
(1)*:指針運(yùn)算符(或稱″間接訪問″運(yùn)算符)
(2)&:取地址運(yùn)算符
通過*號(hào)可以引用一個(gè)存儲(chǔ)單元,如有如下定義:
int i=123,*p,k;
則 p=&I;或k=*p;或k=*&I;都將變量i中的值賦給k。
*p=10;或*&i=10;都能把整數(shù)10賦給變量i。這里,等號(hào)左邊的表達(dá)式*p和*&i都代表變量i的存儲(chǔ)單元。
8.2 變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向它們的指針變量
1.變量的指針和指向變量的指針變量。
2.數(shù)組的指針和指向數(shù)組的指針變量。
所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的指針是數(shù)組元素的地址。
C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。
3.字符串的指針和指向字符串的指針變量。
我們可以通過定義說明一個(gè)指針指向一個(gè)字符串。
C語言將字符串隱含處理成一維字符數(shù)組,但數(shù)組的每個(gè)元素沒有具體的名字,這一點(diǎn)跟字符數(shù)組不一樣。要引用字符串中的某個(gè)字符,只能通過指針來引用:*(s+0),*(s+1),…,*(s+n)。
4.函數(shù)的指針和指向函數(shù)的指針變量。
指向函數(shù)的指針變量的一般形式為 :
數(shù)據(jù)類型標(biāo)識(shí)符 (*指針變量名)();
這里的″數(shù)據(jù)類型標(biāo)識(shí)符″是指函數(shù)返回值的類型。
函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用(即用指向函數(shù)的指針變量調(diào)用)。
指向函數(shù)的指針變量表示定義了一個(gè)指向函數(shù)的指針變量,它不是固定指向哪一個(gè)函數(shù),而只是定義了這樣的一個(gè)類型變量,它專門用來存放函數(shù)的入口地址。在程序中把哪一個(gè)函數(shù)的地址賦給它,它就指向哪一個(gè)函數(shù)。在一個(gè)程序中,一個(gè)指針變量可以先后指向不同的函數(shù)。
在給函數(shù)指針變量賦值時(shí),只需給出函數(shù)名而不必給出參數(shù)。因?yàn)楹瘮?shù)指針賦的值僅是函數(shù)的入口地址,而不涉及到實(shí)參與形參的結(jié)合問題。
對(duì)指向函數(shù)的指針變量,表達(dá)式p+n,p++,p--等都無意義。
5.結(jié)構(gòu)體的指針與指向結(jié)構(gòu)體的指針變量
一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址。可以設(shè)一個(gè)指針變量,用來指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。
8.3 用指針做函數(shù)參數(shù)
函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類型,它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。
8.4 返回指針值的指針函數(shù)
一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型數(shù)據(jù) ,即地址這種帶回指針值的函數(shù),一般的定義形式為:
類型標(biāo)識(shí)符 *函數(shù)名(形參表);
相關(guān)推薦:
2014年9月計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間預(yù)告
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |