這說明你對指針和函數(shù)參數(shù)傳遞的理解不到位
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都做網(wǎng)站、烏達網(wǎng)絡(luò)推廣、小程序開發(fā)、烏達網(wǎng)絡(luò)營銷、烏達企業(yè)策劃、烏達品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供烏達建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:jinyejixie.com
這個程序里你想用函數(shù)F改變p,那么就要給F傳遞p的地址,p的類型是int*,那么它的的地址類型是int**,傳遞p給F:
int?main()
{
void?F(int?**p);????//int**
int?*p=NULL;
F(p);?????//傳地址
printf("%d",*p);
delete?p;????//釋放
return?0;
}
void?F(int?**p)???//int**
{
*p=new?int;???
**p=1;
}
或者用C++的引用:
int?main()
{
void?F(int?*p);????//int*
int?*p=NULL;
F(p);?????//這里就是引用了
printf("%d",*p);
delete?p;????//釋放
return?0;
}
void?F(int?*p)???//int*
{
p=new?int;???
*p=1;
}
其實,函數(shù)指針確實不是“指向函數(shù)的指針”
函數(shù)指針,就是函數(shù)指針,加不加*沒有實際意義。
二樓的那個:
c=(*p)(a,b);
也可以寫成
c=(****************************************************p)(a,b);
或者
c=p(a,b);
你說它指向什么?
PS,加*有特殊的用途,初學(xué)者就算了
并不是不規(guī)范的問題,你子程序?qū)懛ㄖ荒茉谧映绦蛑休敵稣_的數(shù)據(jù),而在主函數(shù)中無法得到交換過的x和y的值。參考程序運用指針讓子程序去讀寫a和b的值,在子程序執(zhí)行完成后,a和b的值確實得到了交換。
你的程序中子程序采用的不是指針類型參數(shù),這樣子程序無法將交換過后的值傳回來。
第一條紅線是定義一個函數(shù)指針;
第二條紅線起強轉(zhuǎn)作用,把0xd010f0強轉(zhuǎn)為對應(yīng)的函數(shù)指針類型
我寫的這個程序可以幫你理解...常量地址被printab取代~
#include?stdio.h
#include?stdlib.h
int?ave(int?n,int?*a);
int?main()
{
int?i,n,*a;
printf("please?input?number?n:");
scanf("%d",n);
a=(int?*)?malloc(n*sizeof(int));
printf("please?input?%d?numbers:\n",n);
for(i=0;in;i++)
scanf("%d",a+i);
printf("The?average?number?is?%d\n",ave(n,a));
}
int?ave(int?n,int?*a)
{
int?i,sum=0;
for(i=0;in;i++)
sum+=*(a+i);
return?sum/n;
}
標題名稱:c語言指針在調(diào)用函數(shù) c語言指針調(diào)用函數(shù)求平均值
轉(zhuǎn)載注明:http://jinyejixie.com/article14/hehoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司、外貿(mào)建站、建站公司
聲明:本網(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)