C語(yǔ)言的指針
我們在使用c語(yǔ)言進(jìn)行編寫(xiě)程序的時(shí)候,就一定會(huì )使用上指針,指針的操作是編寫(xiě)程序的一個(gè)點(diǎn)。
這里,小編就分享一下自己在使用c語(yǔ)言編程過(guò)程中,對于指針的理解:
系統為每一個(gè)內存單元分配一個(gè)地址值,C/C++把這個(gè)地址值稱(chēng)為“指針”。如有int i=5;,存放變量i的內存單元的編號(地址)&i被稱(chēng)為指針。
指針變量”則是存放前述“地址值”的變量,也可以表述為,“指針變量”是存放變量所占內存空間“首地址”的變量(因為一個(gè)變量通常要占用連續的多個(gè)字節空間)。比如在int i=5;后有一句int *p=&i;,就把i的指針&i賦給了int *型指針變量p,也就是說(shuō)p中存入著(zhù)&i。所以說(shuō)指針變量是存放指針的變量。
有一個(gè)事實(shí)值得注意,那就是有不少資料和教科書(shū)并沒(méi)有如上區分,而是認為“指針是指針變量的簡(jiǎn)稱(chēng)”,如對int *p=&i;的解釋是:聲明一個(gè)int *型指針p,并用變量i的地址初始化;而嚴格說(shuō)應該是聲明一個(gè)int *型指針變量p才對。所以有時(shí)看書(shū)要根據上下文理解實(shí)質(zhì),而不能過(guò)于拘泥于文字表述。
1:指針是一個(gè)地址,指向的是個(gè)類(lèi)型:
我們知道,c語(yǔ)言中的類(lèi)型有int,char,bool(這個(gè)不常用),一般我們使用int,char就可以滿(mǎn)足一般的類(lèi)型需求的,如果對于變量的長(cháng)度過(guò)大,就是用long ,float,double,關(guān)于各個(gè)類(lèi)型使用的的長(cháng)度問(wèn)題,可以使用sizeof(int)或者sizeof(long)來(lái)查看各個(gè)類(lèi)型,在系統中的小。
而指針就是一個(gè)8個(gè)字節(64系統)。
2:指針指向的是地址,地址指向的是內容:
我們需要一個(gè)變量,來(lái)存儲地址,這個(gè)變量的值是地址,但是我們可以通過(guò)修改變量的值,來(lái)不斷的改變地址,但是,我們如果需要改變該個(gè)地址的值的話(huà),就需要,對地址的值進(jìn)行修改,而不改變地址。
int a = 10;
int *p ;
p = &a;
*p =11;
a=?
這里我們看到,p 是一個(gè)變量,我們使用p來(lái)存儲變量a的地址,這是,我們使用*p對于這個(gè)變量進(jìn)行賦值,那么a的值最后,是多少呢,結果是11,因為我們使用*p賦值,就相當于a=11,賦值效果一樣的。
3:指針的指針,是面對于指針的變量:
我們說(shuō),指針的指針的時(shí)候,就有點(diǎn)不清楚了,到底怎么區分指針和指針的指針呢。
char *p;
char **pr;
pr = &p;
我們這樣看就清楚了一點(diǎn),char *(*pr); *pr是一個(gè)存儲的值為指針的變量,pr就是存儲上個(gè)變量地址的變量。整合起來(lái)就是,pr是一個(gè)存儲的值為指針的地址的變量。
這樣,我們就基本,對于指針有一個(gè)直接的了解了。
【C語(yǔ)言的指針】相關(guān)文章:
C語(yǔ)言指針的總結08-12
C語(yǔ)言指針教學(xué)10-28
C語(yǔ)言指針的用法07-02
什么是C語(yǔ)言中指針 C語(yǔ)言指針的基礎使用10-01
C語(yǔ)言指針的傳遞10-13
對C語(yǔ)言指針的總結08-27
C語(yǔ)言指針的概念08-20
C語(yǔ)言指針函數和函數指針詳解09-29
C語(yǔ)言指針相關(guān)知識09-17