第一,指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù)。當(dāng)然小伙伴們也可以通過(guò)數(shù)據(jù)的復(fù)制達(dá)到相同的效果,但是這樣往往效率不太好。因?yàn)橹T如結(jié)構(gòu)體等大型數(shù)據(jù),占用的字節(jié)數(shù)多,復(fù)制很消耗性能。
為石景山等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及石景山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、石景山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
但使用指針就可以很好的避免這個(gè)問(wèn)題,因?yàn)槿魏晤愋偷闹羔樥加玫淖止?jié)數(shù)都是一樣的(根據(jù)平臺(tái)不同,有4字節(jié)或者8字節(jié)或者其他可能)。
第二,指針使得一些復(fù)雜的鏈接性的數(shù)據(jù)結(jié)構(gòu)的構(gòu)建成為可能,比如鏈表,鏈?zhǔn)蕉鏄?shù)等等。
第三,有些操作必須使用指針。如操作申請(qǐng)的堆內(nèi)存。還有:C語(yǔ)言中的一切函數(shù)調(diào)用中,值傳遞都是“按值傳遞”的。如果要在函數(shù)中修改被傳遞過(guò)來(lái)的對(duì)象,就必須通過(guò)這個(gè)對(duì)象的指針來(lái)完成。
擴(kuò)展資料
指針的表現(xiàn)形式是地址,核心是指向關(guān)系指針運(yùn)算符“*”的作用是按照指向關(guān)系訪問(wèn)所指向的對(duì)象.如果存在A指向B的指向關(guān)系,則A是B的地址,“*A”表示通過(guò)這個(gè)指向關(guān)系間接訪問(wèn)B。
如果B的值也是一個(gè)指針,它指向C,則B是C的地址,“*B”表示間接訪問(wèn)C如果C是整型、實(shí)型或者結(jié)構(gòu)體等類型的變量或者是存放這些類型的數(shù)據(jù)的數(shù)組元素,則B(即C的地址)是普通的指針,稱為一級(jí)指針,用于存放一級(jí)指針的變量稱為一級(jí)指針變量。
參考資料來(lái)源:百度百科-指針
看你的需要了,有時(shí)不用指針作為參數(shù)達(dá)不到你要的效果,比如一個(gè)swap()函數(shù)。
int
swap(int
a,int
b)
{
int
tmp;
tmp=a;
a=b;
b=tmp;
}
如果你想調(diào)用該函數(shù)交換兩個(gè)變量的值,在主函數(shù)中輸出,那是不可能的。比如這樣調(diào)用:
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
你認(rèn)為會(huì)輸出2
1嗎?錯(cuò)!還是會(huì)輸出1
2的。因?yàn)閭魅雜wap()函數(shù)的只是x,y的拷貝,而不是它們自身。
如果要真正達(dá)到交換的目的,就要用指針傳值。這樣定義函數(shù):
void
swap(int
*a,int
*b)
{
int
tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
但是給函數(shù)傳值時(shí)要注意,指針是指向地址的,所以參數(shù)要是地址,即需要給變量取地址。
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
這樣就是輸出2
1了!
指針存儲(chǔ)的是地址,而不是實(shí)際的值,所以你調(diào)用指針變量就是說(shuō)直接找到它的地址,然后執(zhí)行它所需要執(zhí)行的操作,函數(shù)也不例外
簡(jiǎn)單地說(shuō)指針就是指向變量和對(duì)象的地址。
指針的用途非常廣泛,比如如果你想通過(guò)函數(shù)改變一個(gè)變量的值,就得用指針而不能用值傳遞。還有在很多時(shí)候變量,特別是對(duì)象的數(shù)據(jù)量實(shí)在太大,程序員就會(huì)用指針來(lái)做形參,只需要傳遞一個(gè)地址就行,大大提高了效率。
以上還只是指針的初步應(yīng)用,隨著你在C語(yǔ)言學(xué)習(xí)上的逐步深入,你會(huì)發(fā)現(xiàn)更多的用途的。