這說明你對指針和函數(shù)參數(shù)傳遞的理解不到位

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都做網(wǎng)站、烏達(dá)網(wǎng)絡(luò)推廣、小程序開發(fā)、烏達(dá)網(wǎng)絡(luò)營銷、烏達(dá)企業(yè)策劃、烏達(dá)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供烏達(dá)建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:chinadenli.net
這個(gè)程序里你想用函數(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ù)的指針”
函數(shù)指針,就是函數(shù)指針,加不加*沒有實(shí)際意義。
二樓的那個(gè):
c=(*p)(a,b);
也可以寫成
c=(****************************************************p)(a,b);
或者
c=p(a,b);
你說它指向什么?
PS,加*有特殊的用途,初學(xué)者就算了
并不是不規(guī)范的問題,你子程序?qū)懛ㄖ荒茉谧映绦蛑休敵稣_的數(shù)據(jù),而在主函數(shù)中無法得到交換過的x和y的值。參考程序運(yùn)用指針讓子程序去讀寫a和b的值,在子程序執(zhí)行完成后,a和b的值確實(shí)得到了交換。
你的程序中子程序采用的不是指針類型參數(shù),這樣子程序無法將交換過后的值傳回來。
第一條紅線是定義一個(gè)函數(shù)指針;
第二條紅線起強(qiáng)轉(zhuǎn)作用,把0xd010f0強(qiáng)轉(zhuǎn)為對應(yīng)的函數(shù)指針類型
我寫的這個(gè)程序可以幫你理解...常量地址被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;
}
標(biāo)題名稱:c語言指針在調(diào)用函數(shù) c語言指針調(diào)用函數(shù)求平均值
轉(zhuǎn)載注明:http://chinadenli.net/article14/hehoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、外貿(mào)建站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)