今天学到了函数,想写一个交换两个数字的函数。最开始写的代码如下:
设想在函数里用第三变量进行交换
#define _CRT_SECURE_NO_WARNINGS 1//vs IDE scanf函数报错问题解决方案
#includevoid swap(int x, int y)
{int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
int main()
{int a = 10;
int b = 20;
printf("交换前a=%d,b=%d\n", a, b);
swap(a, b);
printf("交换后a=%d,b=%d\n", a, b);
return 0;
}
结果发现输出之后并没有发生交换
经教程才知道,参数传入函数的只是数值,数值在函数里交换,并没有引起实参a,b的交换。
所以这里需要用到指针变量,用指针指向变量的地址,进行交换,才能完成想要的功能。
ps:个人理解,形参改变不能改变实参,只能用形参指针变量指向实参地址,去改变指向内容,从而间接改变实参变量。(不知道个人理解对不对,望大佬指正)
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#includevoid swap(int* pa, int* pb)
{int tmp = 0;
tmp = *pa;
*pa=*pb;
*pb = tmp;
}
int main()
{int a = 10;
int b = 20;
printf("交换前a=%d,b=%d\n", a, b);
swap(&a, &b);
printf("交换后a=%d,b=%d\n", a, b);
return 0;
}
这里运行结果:
获得了想要的结果。
新手一枚,码字不易
转载请点赞
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款