1、和正常的函數(shù)聲明方法一樣。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的霞山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
C語言的函數(shù)定義格式是:
函數(shù)返回值類型 函數(shù)名 ( 參數(shù)列表 )
{
//函數(shù)體
}
在使用函數(shù)時,要先做聲明,格式如下:
函數(shù)類型 函數(shù)名稱 ( 參數(shù)列表 );
特別地,在函數(shù)聲明中的參數(shù)列表中,不需給出具體的變量名稱,但要給出每個變量的類型。
2、void swap( p1, p2)
int *p1,*p2;
這種寫法是KR C的聲明格式,現(xiàn)在的編譯器普遍遵循ANSI C(或者ISO C)標(biāo)準(zhǔn),所以現(xiàn)在的C語言程序已經(jīng)不再使用這種聲明格式了,而是使用如下形式:
void swap(int *p1,int *p2)
確實很急,函數(shù)聲明 中的函數(shù)名都打錯了~~返回值也沒打。
函數(shù)傳遞是值傳遞,傳遞指針的值 能改變 調(diào)用函數(shù)的值是因為 他們的地址是 一樣的。而實質(zhì)上也是值傳遞,進(jìn)來的是指針指向的地址。
而你mop函數(shù)交換的是 指針 也就是 地址 值 當(dāng)然不影響調(diào)用函數(shù)。
主函數(shù)中
p=m;m=n;n=p;
交換是因為這幾個指針一直在作用域中,沒有釋放。交換了指針中存放的地址,就是指向的內(nèi)存地址的改變。運行下下面二的程序 能幫你理解。
#includestdio.h
int main()
{
int a=604,b=750,c;
int *m,*n,*p;
m=a;
n=b;
printf("指針沒有交換前的地址m n %d %d\n",m,n);
p=m;m=n;n=p;
printf("指針交換后的地址m n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
printf("值沒有交換前的地址m n %d %d\n",m,n);
c=*m;*m=*n;*n=c;
printf("值交換后的地址m n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
return 0;
}
===========================
#includestdio.h
int main()
{
void nop(int *x,int *y);
void mop(int *x,int *y);
int a=604,b=750;
int *m,*n;
m=a;
n=b;
printf("主函數(shù)中指針交換前的地址\tm n %d %d\n",m,n);
mop(m,n);
printf("主函數(shù)中指針交換后的地址\tm n %d %d\n",m,n);
printf("%d%d\n",*m,*n);
nop(m,n);
printf("%d%d\n",*m,*n);
return 0;
}
void mop(int *x,int *y)
{
printf("指針沒有交換前的地址\t\tm n %d %d\n",x,y);
int *z;
{z=x;x=y;y=z;}
printf("指針交換后的地址\t\tm n %d %d\n",x,y);
}
void nop(int *x,int *y)
{int a;
a=*x;*x=*y;*y=a;
}
選D
因為第一個參數(shù)是地址傳遞,fun(b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。
第二個參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。b的值是b。
#includestring.h??//?導(dǎo)入頭文件string.h
#includestdio.h???//?導(dǎo)入頭文件stdio.h
char?*fun(char?*t)??//?定義函數(shù),?名稱fun,?輸入?yún)?shù)為char?*,?返回值為char?*
{
char?*p?=?t;????//?把t的值賦值給p,?相當(dāng)于p指向與t相同的字符串
return?p?+?strlen(t)?/?2;???//?strlen返回值為字符串長度,?然后p位移其一半(向下取整)的距離并返回值
}
int?main(int?argc,?char?*argv[])
{
char?*str?=?"abcdefgh";?//?str指向字符串“abcdefgh”
str?=?fun(str);?????????//?str調(diào)用fun函數(shù),?參數(shù)為str,?并將返回值賦值給str
puts(str);??????????????//?此時str指向e,?輸出為“efgh\n”
return?0;
}
本文題目:c語言帶有指針形參的函數(shù) c語言結(jié)構(gòu)體指針做函數(shù)參數(shù)
路徑分享:http://jinyejixie.com/article28/hpccjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站制作、面包屑導(dǎo)航、網(wǎng)站營銷
聲明:本網(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)