【C语言】用函数交换两个数字(涉及指针初步)-创新互联

今天学到了函数,想写一个交换两个数字的函数。最开始写的代码如下:
设想在函数里用第三变量进行交换
#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元起,快前往官网查看详情吧


网站名称:【C语言】用函数交换两个数字(涉及指针初步)-创新互联
网站地址:http://scyanting.com/article/ppejs.html