徹底搞定c語(yǔ)言指針詳解 C語(yǔ)言指針和數(shù)組結(jié)合起來(lái)該怎么學(xué)?
C語(yǔ)言指針和數(shù)組結(jié)合起來(lái)該怎么學(xué)?我用C語(yǔ)言開(kāi)發(fā)十幾年了,經(jīng)常看到一些新手對(duì)指針和數(shù)組很迷茫。排列首先是array,一個(gè)數(shù)組聲明后就有內(nèi)存了,比如char a[10],那么數(shù)組A就有10個(gè)字節(jié)的內(nèi)存。
C語(yǔ)言指針和數(shù)組結(jié)合起來(lái)該怎么學(xué)?
我用C語(yǔ)言開(kāi)發(fā)十幾年了,經(jīng)常看到一些新手對(duì)指針和數(shù)組很迷茫。
排列
首先是array,一個(gè)數(shù)組聲明后就有內(nèi)存了,比如char a[10],那么數(shù)組A就有10個(gè)字節(jié)的內(nèi)存。
所以可以帶下標(biāo)使用,只要下標(biāo)不超過(guò)10-1,就不會(huì)出錯(cuò)。
針
如果你把數(shù)組想象成一串粘在一起的盒子,指針就是一個(gè)鉤子。鉤子被鉤住的時(shí)候只能用一塊內(nèi)存。比如聲明一個(gè)指針p: char * p,這時(shí)可以 不要用它。只有在P掛接一塊內(nèi)存后,也就是賦值后,才能使用。比如p a或者p ampa[0]。
注意
指針本身也有內(nèi)存,比如int b,其中b取4個(gè)字節(jié),那么char *p,p的類(lèi)型是char *,所以p本身也取4個(gè)字節(jié)。也可以取它的地址,也就是二級(jí)指針:char **pp p。
數(shù)組本身也可以看作是指向一塊內(nèi)存的指針,指針就是數(shù)組名。比如上面的一個(gè)。您可以將a分配給p: p a。更常見(jiàn)的情況是,當(dāng)調(diào)用函數(shù)時(shí)。比如有一個(gè)排序函數(shù):qsort(char *p,int n),需要一個(gè)數(shù)組和數(shù)組中的元素個(gè)數(shù)作為參數(shù)。可以這樣調(diào)用:qsort(a,10)。
歡迎討論關(guān)注我的頭條號(hào)。
c語(yǔ)言函數(shù)和指針哪個(gè)難?
C語(yǔ)言的指針比較難,因?yàn)橹羔槻僮鲀?nèi)存,容易出現(xiàn)段錯(cuò)誤。