void ChangeStrPo(char **p)改為 char** ChangeStrPo(),然后main里,ps=ChangeStrPo();
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、墾利網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
說明,你原來的changestrpo,p是ps的副本,malloc后,p改變了值,但是ps并沒有改變。當傳遞指針的時候,可以通過*ps來改變指針所值的地址內(nèi)存放的值,但是是改變不了實參ps本身的值。
我感覺沒有必要用二級指針,我們的目的主要是為了讓主函數(shù)中的指針的地址指向一個空內(nèi)存。我們完全可以通過傳遞這個指針的地址到子函數(shù)中,然后給這個指針的地址分配內(nèi)存就可以了。例如下面這個程序就是正確的。根本沒有必要使用到二級指針呀。
兄弟,那個不是一級指針,那是指針數(shù)組
指針數(shù)組作為函數(shù)形參時會自動轉(zhuǎn)換為指針的指針,也就是你說的二級指針
char **p=book;從這一行也能證明我說的,自動轉(zhuǎn)換
特別注意:它只會轉(zhuǎn)換數(shù)組的最內(nèi)層(我有點分不清內(nèi)外)
int arr[2][6];
int (*aa)[6] = arr;//對
//int *aa1[6] = arr;//錯
//int (*aa2)[2] = arr;//錯
//int (*aa3)[] = arr;//錯
//int *aa4 = arr;//錯
//int **aa5 = arr; //錯
那你應(yīng)該用指針的指針才行,然后函數(shù)返回指針。
double?*a(double?**p)
{
*p=....?//修改指針所指向的地址
...
return?*p;?//返回指針p指向的地址
}
int?main()
{
double?*p=...?//初始化指針p
double?*q;???//用于接收改變的指針
...
q=a(p);???//將指針p的地址傳遞給a
...
return?0;
}
如果是用作dll的話,那么你應(yīng)該使用和相應(yīng)語言兼容的類型才行
網(wǎng)頁題目:c語言二級指針做函數(shù)參數(shù) 二級c語言指針常見題型
轉(zhuǎn)載來于:http://muchs.cn/article6/dojhpog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、網(wǎng)站收錄、小程序開發(fā)、全網(wǎng)營銷推廣、企業(yè)建站
聲明:本網(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)