是函數(shù)參數(shù)的傳遞方式吧。C語言的話是:值傳遞和指針(地址)傳遞。C++的話除了C語言的兩種方式外還有引用傳遞。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計制作、網(wǎng)站制作和成都IDC機房托管的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗和案例。
void called(int v){ v=2; }
void caller(){ int v=1; called(v); }
這種方式,called并不能改變caller里的v的值,因為called和caller的v分別是兩個內(nèi)存單元,因此只能單向的從caller到called傳值,而不能從called到caller返回值。
void called(int *pv) { *pv=2; }
void caller(){ int v=1; called(v); }
這種方式,called能改變caller的值,因為值的內(nèi)存由caller分配(int v=1;),而called能通過其指針改變這個內(nèi)存的內(nèi)容。
void called(int **ppv){ *ppv=malloc(sizeof(int)); }
void caller(){ int *pv=NULL; called(pv); }
這種方式,內(nèi)存單元是由called分配在heap上的,想返回其地址給caller,因此caller需要提供一個地址的內(nèi)存(int *pv=NULL;), 然后交由called去改變這個單元的值(called(pv))。需要注意的是,這個內(nèi)存不能是在called的stack中,因為一旦called結(jié)束,棧中內(nèi)存都會被銷毀,其值和地址都將無效,因而只能返回在heap中的值和地址。
總之就是記住一個宗旨,如果想通過參數(shù)來獲得返回值,需要在caller中為該返回值分配內(nèi)存單元,然后將這個內(nèi)存單元的地址傳遞給called函數(shù),called函數(shù)通過改變這個地址所指向的內(nèi)存值來返回所需。
C語言中函數(shù)參數(shù)傳遞的三種方式(1)傳值,就是把你的變量的值傳遞給函數(shù)的形式參數(shù),實際就是用變量的值來新生成一個形式參數(shù)
一:值傳遞,只是把一個變量的值復制到調(diào)用函數(shù)中去。
二:引用傳遞,把變量的地址(即指針)傳到調(diào)用的函數(shù)去,調(diào)用的函數(shù)對變量的地址進行的操作 會改變參數(shù)的值。
網(wǎng)站題目:c語言函數(shù)的傳遞方式總結(jié) c語言函數(shù)值傳遞過程
網(wǎng)頁地址:http://www.chinadenli.net/article24/doogpje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站收錄、App設(shè)計、微信公眾號、App開發(fā)
聲明:本網(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)