c语言中指针作为实参使用SWAP函数的问题。

 我来答
富凌丝逯坤
2019-08-16 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:873万
展开全部
c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。
但,如果参数类型是指针类型,则可以通过对指针变量所指向的地址中的数据进行修改,达到改变实参地址中的数据目的。
因此,使用SWAP函数进行数据交换时,必须保证两点:
1.
参数必须是指针类型,指向待交换的数据
2.
交换时,必须交换地址中的数据,而不是交换地址本身。
参考代码:
//错误的交换代码1
void swap1( int a, int b ) //参数不是待交换数据的指针
{
int t=a;
a=b;
b=t;
}
//错误的交换代码2
void swap2( int *a, int *b )
{
int *t=a;//交换形参变量本身
a=b;
b=t;
}
//正确的交换代码
void swap( int *a, int *b )
{
int t=*a;//交换形参变量地址中的数据,指针变量不变
*a=*b;
*b=t;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TableDI
2024-07-18 广告
VLOOKUP函数是Excel中用于数据匹配的重要工具。其使用方法是:在个参数中输入要查找的值,第二个参数是包含数据的范围或表格,第三个参数指定返回数据的列号,第四个参数(可选)决定查找方式(0为精确匹配,其他为近似匹配)。例如,假设我们想... 点击进入详情页
本回答由TableDI提供
蔺艾卢靖
2019-06-13 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:759万
展开全部
void
swap(int*a,int*b)
{
int*t;
t=a;a=b;b=t;
//这里交换的是指针a,b的副本,不影响指针指向的值
}
改为
void
swap(int*a,int*b)
{
int
t;
t=*a;*a=*b;*b=t;
//这里交换的是值
}
再看看别人怎么说的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式