对于传参时,到底传普通变量,与传指针变量的选择思路?

对于传参时,到底传普通变量,与传指针变量,取决于用户是否需要在子函数内部引起实参本身发生改变。因为实参与形参的存储地址完全不同,因此在子函数中无法直接通过简单赋值实现数据修改,且形参的存储地址会在函数运行结束后自行释放,丢失数据。想要继续利用子函数中的数据只能通过返回值进行获取,且每个函数只能获取一个返回值。

但若是需要多个数据或者不能使用返回值时,只传递参数就无法进行实现。,这时需要一种新的方法来使子函数的计算值可以在子函数结束后继续被利用。而主函数所分配的空间其生命周期与程序相同,因此想要在子函数中修改实参的内容可以考虑通过操作指向其的指针来从内存中修改实参的数据。

int change(int a,int b)
	{
		Int c = 0;
		c = a + b;
		return c;
	}
Int main(int argc, int argv[])
	{
		Int a = 12;
		Int b =24;
		int sum = 0;
		sum = change(a,b);
		printf(“sum=%d”,sum);
	}//通过返回值进行数据获取,每个函数只能有一个返回值
int change(int a,int b,int * sum)
	{
		*sum = a + b;
	}
Int main(int argc, int argv[])
	{
		Int a = 12; 
		Int b =24;
		Int sum = 0;
		int * p = ∑
		change(a,b,p);
		printf(“sum=%d”,sum);//通过指针获取数据,不需要通过返回值,且可以获取多个数据
	}

因此,若是想在子函数中保留多个修改过的主函数的参数数据,需要同过在子函数中操作主函数变量地址,来使想要的数据存储到主函数申请的不会随着子函数结束而释放的地址。实现数据的重复利用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值