对于传参时,到底传普通变量,与传指针变量,取决于用户是否需要在子函数内部引起实参本身发生改变。因为实参与形参的存储地址完全不同,因此在子函数中无法直接通过简单赋值实现数据修改,且形参的存储地址会在函数运行结束后自行释放,丢失数据。想要继续利用子函数中的数据只能通过返回值进行获取,且每个函数只能获取一个返回值。
但若是需要多个数据或者不能使用返回值时,只传递参数就无法进行实现。,这时需要一种新的方法来使子函数的计算值可以在子函数结束后继续被利用。而主函数所分配的空间其生命周期与程序相同,因此想要在子函数中修改实参的内容可以考虑通过操作指向其的指针来从内存中修改实参的数据。
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);//通过指针获取数据,不需要通过返回值,且可以获取多个数据
}
因此,若是想在子函数中保留多个修改过的主函数的参数数据,需要同过在子函数中操作主函数变量地址,来使想要的数据存储到主函数申请的不会随着子函数结束而释放的地址。实现数据的重复利用。