C语言基础——函数传参的方式

学习目标

掌握值传递和指针传递的区别

学习内容

值传递

1.值传递的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向的传送给实参。
2.在函数调用过程中,形参值的变化不会影响到实参值的变化

void swap(int x, int y)
{
	int temp;
	temp = x;
	x = y;
	temp = x;
	peintf("x:%d y:%d", x, y);
}
int main(void) 
{
	
	int a, b;
	printf("please input tow number;");
	scanf("%d %d", &a, &b);
	
	if(a < b)
	{
		swap(a,b);
		
	}	
	peintf("a:%d,b:%d", a, b);
	
		return 0;
}

此实例 为什么不能通过swap()函数将ab的值调换呢?
在mian函数中判断a < b 执行swap()函数 直接将实参传到形参上
但在swap执行完毕后 属于swap的栈全部清除 同时ab并没有被改变

指针传递

1.在函数调用过程中形参指针本身值的变化不会影响到实参指针本身值的变化,这个和值传递是相同的
2.通过形参指针可以修改实参指针所指向的储存单元中的值。

void swap(int *p1, int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = *p1;
	
}
int main(void) 
{
	
	int a, b, *pa, *pb;
	printf("please input tow number;");
	scanf("%d %d", &a, &b);
	
	pa = &a;
	pb = &b;
	if(a < b)
	{
		swap(pa,pb);
		
	}	
	peintf("a:%d,b:%d", a, b);
	
		return 0;
}

在指针传递中用指针作为桥梁,搭建形参到实参的通道。
形参通过指针直接改变原a,b 中的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值