c語(yǔ)言中什么是指針
c語(yǔ)言中什么是指針
指針一般指向一個(gè)函數(shù)或一個(gè)變量。在使用一個(gè)指針時(shí),一個(gè)程序既可以直接使用這個(gè)指針?biāo)鶅?chǔ)存的內(nèi)存地址,又可以使用這個(gè)地址里儲(chǔ)存的函數(shù)的值。
在計(jì)算機(jī)語(yǔ)言中,由于通過(guò)地址能找到所需的變量單元,可以說(shuō),地址指向該變量單元。因此,將地址形象化的稱為“指針”。意思是通過(guò)它能找到以它為地址的內(nèi)存單元。
c語(yǔ)言指針
1:指針是一個(gè)地址,指向的是個(gè)類型:
我們知道,c語(yǔ)言中的類型有int,char,bool(這個(gè)不常用),一般我們使用int,char就可以滿足一般的類型需求的,如果對(duì)于變量的長(zhǎng)度過(guò)大,就是用long ,float,double,關(guān)于各個(gè)類型使用的的長(zhǎng)度問(wèn)題,可以使用sizeof(int)或者sizeof(long)來(lái)查看各個(gè)類型,在系統(tǒng)中的小。
而指針就是一個(gè)8個(gè)字節(jié)(64系統(tǒng))。
2:指針指向的是地址,地址指向的是內(nèi)容:
我們需要一個(gè)變量,來(lái)存儲(chǔ)地址,這個(gè)變量的值是地址,但是我們可以通過(guò)修改變量的值,來(lái)不斷的改變地址,但是,我們?nèi)绻枰淖冊(cè)搨€(gè)地址的值的話,就需要,對(duì)地址的值進(jìn)行修改,而不改變地址。
int a = 10;
int *p ;
p = &a;
*p =11;
a=?
這里我們看到,p 是一個(gè)變量,我們使用p來(lái)存儲(chǔ)變量a的地址,這是,我們使用*p對(duì)于這個(gè)變量進(jìn)行賦值,那么a的值最后,是多少呢,結(jié)果是11,因?yàn)槲覀兪褂?p賦值,就相當(dāng)于a=11,賦值效果一樣的。
3:指針的指針,是面對(duì)于指針的變量:
我們說(shuō),指針的指針的時(shí)候,就有點(diǎn)不清楚了,到底怎么區(qū)分指針和指針的指針呢。
char *p;
char **pr;
pr = &p;
我們這樣看就清楚了一點(diǎn),char *(*pr); *pr是一個(gè)存儲(chǔ)的值為指針的變量,pr就是存儲(chǔ)上個(gè)變量地址的變量。整合起來(lái)就是,pr是一個(gè)存儲(chǔ)的值為指針的地址的變量。
這樣,我們就基本,對(duì)于指針有一個(gè)直接的了解了。