• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言讲义——传值、传引用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

值类型在做参数的时候,函数内使用的是实参的副本
函数执行完毕后,即使函数内对参数做了修改,调用方的参数还是原来的值。

#include <stdio.h>
// 值调用
void swap_value(int x, int y) {
	int temp = x;
	x = y;
	y = temp;
}
main() {
	int x = 0;
	int y = 1;
	printf("x = %d, y = %d\n", x, y);

	swap_value(x, y);
	printf("传值调用后:x = %d, y = %d\n", x, y);
}

运行结果:

x = 0, y = 1
传值调用后:x = 0, y = 1

传引用

将地址传入参数,在地址指向的内存空间中修改具体的值,则调用方亦可取也。

#include <stdio.h>
//  “值调用”
void swap_value(int x, int y) {
	int temp = x;
	x = y;
	y = temp;

}
// “引用调用1”,形参:传的是地址,取得是值(*)
void swap_p(int* x, int* y) {
	int temp = *x;
	*x = *y;
	*y = temp;
}
// “引用调用2”,形参:传的是值,接的是地址
void swap_addr(int &a, int &b) {
	int temp = a;
	a = b;
	b = temp;
}
main() {
	int x = 0;
	int y = 1;
	printf("x = %d, y = %d\n", x, y);

	swap_value(x, y);
	printf("传值调用后:x = %d, y = %d\n", x, y);

	swap_p(&x, &y);
	printf("传地址调用后:x = %d, y = %d\n", x, y);

	swap_addr(x, y);
	printf("传值接地址调用后:x = %d, y = %d\n", x, y);
}

运行结果:

x = 0, y = 1
传值调用后:x = 0, y = 1
传地址调用后:x = 1, y = 0
传值接地址调用后:x = 0, y = 1	←(0,1)换成(1,0);这一步又还回来(0,1)

练习:返回值,返回参数

定义一个函数,要求能够同时得到一个整型数组的最大值和最小值。

#include <stdio.h>
// 返回值:最大值
// 返回参数:最小值
int max_min(int a[], int len, int *min) {
	int nMax = a[0];
	int nMin = a[0];
	for(int i = 0; i<len ; i++) {
		if (nMax < a[i]) {
			nMax = a[i];
		}
		if (nMin > a[i]) {
			nMin = a[i];
		}
	}
	*min = nMin;
	return nMax;
}

int main(int argc, char *argv[]) {
	int a[]= {1,2,5,9,7};
	int len = sizeof(a)/sizeof(int);

	int nMax_main;
	int nMin_main;
	nMax_main = max_min(a, len, &nMin_main);
	printf("Main : Max = %d, Min = %d\n", nMax_main, nMin_main);

	return 0;
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C语言博客作业--嵌套循环发布时间:2022-07-13
下一篇:
C#空值和null判断发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap