溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

有關(guān)兩個(gè)數(shù)調(diào)換的時(shí)候如果用函數(shù)的話為什么要用指針進(jìn)行傳參

發(fā)布時(shí)間:2020-06-25 02:42:09 來源:網(wǎng)絡(luò) 閱讀:268 作者:小峰的博客 欄目:編程語言

我們首先舉例出3個(gè)函數(shù),看看這三個(gè)函數(shù)的輸出有什么不同

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//void huhuan(int ,int);
//void huhuan_1(int ,int );
//void huhuan_2(int ,int );
void huhuan(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
void huhuan_1(int p,int q)
{
int t;
t=p;
p=q;
q=t;
}
void huhuan_2(int
p,int q)
{
int t;
t=
p;
p=q;
*q=t;
}
int main()
{
int a=5;
int b=2;
//huhuan(a,b);
//huhuan_1(&a,&b);
//huhuan_2(&a,&b);
printf("%d,%d\n",a,b);
system("pause");
return 0;
}

事實(shí)上,只有jiao_huan2函數(shù)才可以實(shí)現(xiàn)兩個(gè)數(shù)的交換,這是為什么呢?
【1】執(zhí)行huhuan(a,b);時(shí),不能互換a和b的值,是因?yàn)閳?zhí)行互換函數(shù)時(shí),只是互換了形參的值,函數(shù)執(zhí)行結(jié)束時(shí),對實(shí)參沒做任何改變。
【2】執(zhí)行huhuan_1(&a,&b);時(shí),不能互換a和b的值,是因?yàn)閷τ谥羔樧兞縼碚f,改變地址的值并不改變指針?biāo)赶虻膬?nèi)容的值。
【3】執(zhí)行huhuan_2(&a,&b);時(shí),能互換a和b的值,是因?yàn)閷,b的地址分別傳遞給了p和q,執(zhí)行互換函數(shù)時(shí),將a和b的原地址對應(yīng)的內(nèi)容互換了。
注意:指針就是地址;指針變量就是存放地址的變量;改變地址的值并不改變該地址對應(yīng)的內(nèi)容的值。
這里我也明白了函數(shù)需要對變量進(jìn)行修改時(shí),必須傳入指針,然后利用指針間接訪問變量,再對變量進(jìn)行修改,這里也必須對函數(shù)實(shí)參和形參傳遞理解清楚。
而我們在用函數(shù)的時(shí)候,當(dāng)要修改內(nèi)存的值 需要傳內(nèi)存地址的時(shí)候,我們就需要傳入指針來達(dá)到目的。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI