怎么知道形参的改变对实参值有没有影响,如下面三道题,看答案不明白,求大神赐教
1个回答
展开全部
它是指在函数体里,若形参指向的地址发生变化,地址发生变化后发生的值的改变,不会通过实际参数带回去。 若形参指向的地址没有发生变化,这时 形参指向的值发生变化,那么变化后的值,能通过 实际参数 带回去。
例如:
void sp(int *a)
{int b=2;
*a=*a *2; // 在此以前,形参地址未变,现在更新它指向的值。(调用时k变6)
printf("%d,",*a); // 输出更新了的值 (k=6),作参考,这个值可以被带回去
a=&b; // 形参地址变为 &b
*a=*a*2; // 形参地址变化后,再更新指向的值,这个值只能在这里使用,不能被实参带回去
printf("%d,",*a); // 输出更新了的值 4,作参考,这个值不能被实参 带回去
}
运行主函数,int k=3; 初值
sp(&k); 调用
printf("%d",k); 调用后输出 6
例如:
void sp(int *a)
{int b=2;
*a=*a *2; // 在此以前,形参地址未变,现在更新它指向的值。(调用时k变6)
printf("%d,",*a); // 输出更新了的值 (k=6),作参考,这个值可以被带回去
a=&b; // 形参地址变为 &b
*a=*a*2; // 形参地址变化后,再更新指向的值,这个值只能在这里使用,不能被实参带回去
printf("%d,",*a); // 输出更新了的值 4,作参考,这个值不能被实参 带回去
}
运行主函数,int k=3; 初值
sp(&k); 调用
printf("%d",k); 调用后输出 6
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询