指針一大特點(diǎn)是,對(duì)一個(gè)函數(shù)而言能實(shí)現(xiàn)多個(gè)返回值!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、欒城網(wǎng)站維護(hù)、網(wǎng)站推廣。
同時(shí)指針在某些情況下與數(shù)組有共通之處!
它能直接對(duì)一個(gè)內(nèi)存進(jìn)行操作,在加密技術(shù)上也有不小的作用力!
…………還有很多,程序?qū)懙脑蕉嗑驮綍?huì)感覺(jué)指針的重要作用的。
字符串處理的頭文件:string.h(希望對(duì)你有幫助)
掌握指針的使用,可以使程序簡(jiǎn)簡(jiǎn)潔、緊湊、高效。其實(shí)指針使用起來(lái)更簡(jiǎn)潔一點(diǎn),它能直接訪問(wèn)內(nèi)存單元地址。
以下是摘錄的:
1.指針是C語(yǔ)言中一個(gè)重要的組成部分,使用指針編程有以下優(yōu)點(diǎn):
(1)提高程序的編譯效率和執(zhí)行速度。
(2)通過(guò)指針可使用主調(diào)函數(shù)和被調(diào)函數(shù)之間共享變量或數(shù)據(jù)結(jié)構(gòu),便于實(shí)現(xiàn)雙向數(shù)據(jù)通訊。
(3)可以實(shí)現(xiàn)動(dòng)態(tài)的存儲(chǔ)分配。
(4)便于表示各種數(shù)據(jù)結(jié)構(gòu),編寫(xiě)高質(zhì)量的程序。
2.我舉個(gè)例子,例如你申請(qǐng)了10個(gè)int變量的數(shù)組,一共是 sizeof(int) * 10 那么多字節(jié)的空間。但是你需要從 第二個(gè)自己開(kāi)始操作,而不是從下一個(gè)int開(kāi)始(下一個(gè)int應(yīng)該下一個(gè)int變量的地址,也就是偏移sizeof(int)個(gè)字節(jié)),這時(shí)候沒(méi)有指針你根本無(wú)法做到。
為什么要做這么奇怪的操作?為什么申請(qǐng)了10個(gè)int變量,但是操作時(shí)卻從第二個(gè)字節(jié)開(kāi)始,而不是第二個(gè)int變量開(kāi)始?因?yàn)楹芏嗨惴ǎ咏饷?、壓縮、圖形圖像、科學(xué)計(jì)算、網(wǎng)絡(luò)通訊……領(lǐng)域,都需要按字節(jié)訪問(wèn)源數(shù)據(jù),而不是根據(jù)你申請(qǐng)的變量類型來(lái)訪問(wèn)。
首先你要認(rèn)識(shí)函數(shù)傳參是怎么進(jìn)行的
函數(shù)傳參是復(fù)制形的,舉個(gè)例子說(shuō):
void modify(int a)
{
a++;
}
void main()
{
int a=5;
modify(a);
printf("%d",a);
}
這個(gè)程序的答案還是5。為什么?
因?yàn)楫?dāng)調(diào)用modify(a)時(shí),在執(zhí)行modify函數(shù)時(shí),是另外開(kāi)辟了一個(gè)內(nèi)存空間,將main中a的值復(fù)制過(guò)來(lái),modify函數(shù)中所有的操作都是相對(duì)于這個(gè)新開(kāi)辟的內(nèi)存空間而言的,對(duì)原來(lái)的a沒(méi)有任何改變。
現(xiàn)在就來(lái)說(shuō)說(shuō)指針,如果用指針傳參的話那就完全不一樣了,指針(pointer),說(shuō)白了即是指向變量?jī)?nèi)存地址。同樣上面的例子:
void modify(int * a)
{
(*a)++;
}
void main()
{
int a=5;
modify(a);
printf("%d",a);
}
這個(gè)答案當(dāng)然是6
因?yàn)槟銈鬟M(jìn)去的是a的地址,所以在modify函數(shù)中的操作都是對(duì)a地址上的內(nèi)容進(jìn)行操作,即是操作a所以modify函數(shù)不用返回這個(gè)數(shù),main中a的值也會(huì)改變。因?yàn)榇蠹叶际遣僮魍粋€(gè)內(nèi)存空間,而上面不用指針,modify操作的是另一個(gè)新開(kāi)辟的內(nèi)存空間,只是這個(gè)內(nèi)存空間初始值和a一樣。
現(xiàn)在來(lái)說(shuō)說(shuō)傳參,其實(shí)你“為什么函數(shù)參數(shù)是字符串的多用指針?” 那句我不是很明白,C中的字符串傳參好像就指針一種形式(除非用結(jié)構(gòu)體)。
何時(shí)用指針,何時(shí)用拷貝。當(dāng)傳的參數(shù)是一個(gè)結(jié)構(gòu)體,而這個(gè)結(jié)構(gòu)體比較大,這時(shí)最好用指針,因?yàn)槿绻每截惖脑?,單單花在拷貝的時(shí)間就要浪費(fèi)很多,而如果這個(gè)函數(shù)經(jīng)常被調(diào)用,那么這效率問(wèn)題就出現(xiàn)了。
你在子函數(shù)中要對(duì)你的主調(diào)用函數(shù)中變量進(jìn)行操作時(shí)也可以用指針做參數(shù),這樣子函數(shù)就可以不用return 如果不是用指針的話,就要再子函數(shù)的未尾加上一條return x;把這個(gè)數(shù)返回當(dāng)返回值。
多看點(diǎn)書(shū),多寫(xiě)點(diǎn)程序,剛開(kāi)始學(xué)都會(huì)對(duì)指針比較迷茫。寫(xiě)多了,自然而然就懂了。
標(biāo)題名稱:c語(yǔ)言函數(shù)指針優(yōu)點(diǎn) c語(yǔ)言指針函數(shù)調(diào)用例子
路徑分享:http://www.rwnh.cn/article40/doppjeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、App設(shè)計(jì)、定制網(wǎng)站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)