c語言指針函數(shù)返回值,c語言指針函數(shù)返回值fa

C語言 關(guān)于指針函數(shù)返回值

struct student *p, *q, *head;

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),貴南網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:貴南等地區(qū)。貴南做網(wǎng)站價格咨詢:18980820575

這里head不就是 struct student 類型的指針么。

C語言怎么讓一個函數(shù)返回指針

這種方式叫做“用指針函數(shù)*creat()的返回值來傳遞動態(tài)內(nèi)存”,這是一個C語法

首先你要注意,子函數(shù)*creat()用了malloc動態(tài)申請內(nèi)存,而return返回的是指針變量所指向的地址,而不是指針!相當(dāng)于將你所申請的動態(tài)內(nèi)存返回給主函數(shù)

int

*fun(void)//這里是指針函數(shù)

{

int

*p

=

(int

*)

malloc

(int);//動態(tài)申請內(nèi)存//p在這里指向了一塊合法內(nèi)存的地址

return

p;

}

void

main(void)

{

int

*q

=

NULL;

q

=

fun();//fun()返回指針p所指向的地址,(指針p是在棧上創(chuàng)建的,所以*fun()函數(shù)運(yùn)行完,指針?biāo)峙涞膬?nèi)存被系統(tǒng)自動釋放)這時q指向p,得到了malloc所申請到的內(nèi)存

free(q);//釋放動態(tài)內(nèi)存

}

C語言指針與返回值

函數(shù)A的返回值錯誤。雖然地址和指針很像,但還是不同的兩個東西。而且,一旦出了函數(shù)A,返回的地址,也就該被回收,會導(dǎo)致程序出錯。是非常危險的行為。

舉個例子說明下吧。

int *p=a;

這個,在數(shù)值上,p是和a的地址相等的,也就是有p==a。

這時如果a=1;那么你知道*p==1,是真。

但是此時,p存儲的是a的地址,p還有自己本身的地址。就好比,你(p)坐在座位上,用手指向另一個座位(a)一樣。那個座位就是a的地址,上面坐著誰(1),就是a的值。你本身就是指針了。

所以說,返回值是指針和地址是完全不同的兩個概念。所以就是錯誤的!

B函數(shù)為啥正確呢?因?yàn)镹ULL是一種特殊的指針,叫空指針。所以是可以算作正確的。

當(dāng)前題目:c語言指針函數(shù)返回值,c語言指針函數(shù)返回值fa
標(biāo)題鏈接:http://muchs.cn/article22/hcipcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作、App設(shè)計(jì)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司