#include stdio.h
創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)寧夏,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
#define N 10
void Swap ( int *a, int *b, int n);
int main(void)
{
int *a, *b;
int num1[N], num2[N];
for (a = num1; a num1 + N; a++)
scanf ("%d", a);
for (b = num2; b num2 + N; b++)
scanf ("%d", b);
a = num1;//重新指向首地址
b = num2;//重新指向首地址
Swap (a, b, N);
printf ("*********交換后**********\n");
for (a = num1; a num1 + N; a++)
printf ("%3d", *a);
printf ("\n");
for (b = num2; b num2 + N; b++)
printf ("%3d", *b);
return 0;
}
void Swap (int *a, int *b, int n)
{
int temp;
int i;
for (i = 0; i n; i++)
{
temp = *(a + i);
*(a + i) = *(b + i);
*(b + i) = temp;
}
}
#includestdio.h
void?mswap(int?*p1,?int*?p2);//在前邊聲明一下函數(shù)
int?main()
{
int?a,?b,?*pa,?*pb,?swap(int?p1,?int?p2);
scanf("%d%d",?a,?b);
pa?=?a;? /*指針pa指向整數(shù)a*/
pb?=?b;? /*指針pb指向整數(shù)b*/
printf("a=%d,b=%d\n",?a,?b);
mswap(pa,?pb);? /*調(diào)用函數(shù)swap,實(shí)參為指針*/
printf("a=%d,b=%d\n",?a,?b);
return?0;//int?main()
}
void?mswap(int?*p1,?int*?p2)
{
int??t;
t?=?*p1;?*p1?=?*p2;?*p2?=?t;
}
我用的vs2013,貌似系統(tǒng)自帶swap,會報(bào)錯(cuò)。所以把函數(shù)名改成了mswap
函數(shù)參數(shù)用值傳遞時(shí),函數(shù)的形參只不過是實(shí)參的拷貝而已。也就是說,1中調(diào)用swap函數(shù)時(shí),內(nèi)存中實(shí)際上a,b,x,y四個(gè)變量都存在,x是a的拷貝,y是b的拷貝,對x,y的值進(jìn)行交換,a,b的值并未交換。
而2中用了指針傳遞,swap中的a,b,實(shí)際上是指向了main中的a,b。這個(gè)swap中交換的是a,b指向的變量的值,也就是交換了main中的a,b的值。
網(wǎng)站標(biāo)題:c語言指針和函數(shù)調(diào)整 c語言指針函數(shù)的調(diào)用改變的是什么
網(wǎng)站鏈接:http://jinyejixie.com/article8/dopsjop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、靜態(tài)網(wǎng)站、品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(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)