第一,指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù)。當然小伙伴們也可以通過數(shù)據(jù)的復制達到相同的效果,但是這樣往往效率不太好。因為諸如結(jié)構(gòu)體等大型數(shù)據(jù),占用的字節(jié)數(shù)多,復制很消耗性能。
為石景山等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及石景山網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、網(wǎng)站設計、石景山網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
但使用指針就可以很好的避免這個問題,因為任何類型的指針占用的字節(jié)數(shù)都是一樣的(根據(jù)平臺不同,有4字節(jié)或者8字節(jié)或者其他可能)。
第二,指針使得一些復雜的鏈接性的數(shù)據(jù)結(jié)構(gòu)的構(gòu)建成為可能,比如鏈表,鏈式二叉樹等等。
第三,有些操作必須使用指針。如操作申請的堆內(nèi)存。還有:C語言中的一切函數(shù)調(diào)用中,值傳遞都是“按值傳遞”的。如果要在函數(shù)中修改被傳遞過來的對象,就必須通過這個對象的指針來完成。
擴展資料
指針的表現(xiàn)形式是地址,核心是指向關(guān)系指針運算符“*”的作用是按照指向關(guān)系訪問所指向的對象.如果存在A指向B的指向關(guān)系,則A是B的地址,“*A”表示通過這個指向關(guān)系間接訪問B。
如果B的值也是一個指針,它指向C,則B是C的地址,“*B”表示間接訪問C如果C是整型、實型或者結(jié)構(gòu)體等類型的變量或者是存放這些類型的數(shù)據(jù)的數(shù)組元素,則B(即C的地址)是普通的指針,稱為一級指針,用于存放一級指針的變量稱為一級指針變量。
參考資料來源:百度百科-指針
看你的需要了,有時不用指針作為參數(shù)達不到你要的效果,比如一個swap()函數(shù)。
int
swap(int
a,int
b)
{
int
tmp;
tmp=a;
a=b;
b=tmp;
}
如果你想調(diào)用該函數(shù)交換兩個變量的值,在主函數(shù)中輸出,那是不可能的。比如這樣調(diào)用:
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
你認為會輸出2
1嗎?錯!還是會輸出1
2的。因為傳入swap()函數(shù)的只是x,y的拷貝,而不是它們自身。
如果要真正達到交換的目的,就要用指針傳值。這樣定義函數(shù):
void
swap(int
*a,int
*b)
{
int
tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
但是給函數(shù)傳值時要注意,指針是指向地址的,所以參數(shù)要是地址,即需要給變量取地址。
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
這樣就是輸出2
1了!
指針存儲的是地址,而不是實際的值,所以你調(diào)用指針變量就是說直接找到它的地址,然后執(zhí)行它所需要執(zhí)行的操作,函數(shù)也不例外
簡單地說指針就是指向變量和對象的地址。
指針的用途非常廣泛,比如如果你想通過函數(shù)改變一個變量的值,就得用指針而不能用值傳遞。還有在很多時候變量,特別是對象的數(shù)據(jù)量實在太大,程序員就會用指針來做形參,只需要傳遞一個地址就行,大大提高了效率。
以上還只是指針的初步應用,隨著你在C語言學習上的逐步深入,你會發(fā)現(xiàn)更多的用途的。
文章標題:c語言使用指針函數(shù)的意義 c語言指針函數(shù)調(diào)用例子
當前地址:http://jinyejixie.com/article40/dohhsho.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站制作、App設計、建站公司、面包屑導航、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)