实参和形参的区别

文章详细解释了函数调用中的实参与形参概念,以及传值调用与传址调用的区别。实参与形参分别占用独立的内存,形参是实参的临时拷贝。当需要修改实参值时,需通过指针传递地址,即传址调用。通过两个示例,演示了正确和错误的传参方式,强调了在需要改变原值时使用指针的重要性。
摘要由CSDN通过智能技术生成

初学者会迷惑实参与形参有什么实际区别,没详细了解又会有什么影响,我就在这详细的讲解。

涉及到了函数的传调用与传调用的区别。

函数的参数中分为实际参数与形式参数。

在调用函数时主函数需要给自定义函数传递参数,函数中有实参与形式之分,在主函数中的传值操作是实参,自定义函数的接收值操作是形参,形参是实参临时拷贝,修改形参对实参没有实际影响。

说白了就是实参与形参都占有独立的内存块,想修改形参值就得用指针传递地址给函数。

接下来我就用两个简单例子来实操一下

这个是正确的传参操作

void Swap(int*x,int*y)//形参
{
	int tmp = *x;
	*x = *y;
	*y = tmp;
}
int main()
{

	int a = 10;
	int b = 20;
	Swap(&a,&b);//实参
	printf("%d %d", a, b);
	return 0;
}

 这个是错误的传参。

void Swap(int x,int y)//形参
{
	int tmp = x;
	x = y;
	y = tmp;
}
int main()
{

	int a = 10;
	int b = 20;
	Swap(a,b);//实参
	printf("%d %d", a, b);
	return 0;
}

上文我有说过,实参与形参都有独立的内存块,上图只传递了值而没有传递地址,所以在Swap函数中的形参与main函数中实参是不同的内存块,Swap函数中换值操作已经执行过,因为他们的栈空间不同,Swap的函数换值操作是无法被main函数所接收。

说这么多简单概括,就是对自定义函数有改值操作时,就得用指针传递地址,让自定义函数与main函数地址一致,简单说就是传址调用时自定义函数可以修改main函数的数值。

有不足的地方还请指正。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。查无此人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值