C语言中的“值传参”和“引用传参”分别是指什么?
答案:1 悬赏:20
解决时间 2021-01-09 12:42
- 提问者网友:自食苦果
- 2021-01-08 17:00
C语言中的“值传参”和“引用传参”分别是指什么?
最佳答案
- 二级知识专家网友:拾荒鲤
- 2021-01-08 17:52
在C语言中其实没有引用传参,都是值传参。即传递的都是实参的副本。
如下示例,
//交换两个参数的值,值传参
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int a = 2, b =1;
swap(a,b); //a,b的值不会改变,因为改变的是实参a,b的副本。
另一个示例:
//所谓的“引用传参”,交换两个数值
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = tem;
}
int a =2, b = 1;
swap(&a, &b);//a,b的值改变
其实这里引用传参,传递的也是参数的副本,只是这个副本是变量a,b的地址,所以你在函数swap中你并不能通过参数改变变量a,b的地址,因为它只是一个副本,是值传递。但你得到变量的地址,你就可以访问和改变变量的内容,所以在第二个swap函数中,你可以通过*x和*y来改变实参的值,从而可以达到交换变量a,b值的效果。但这并不是引用传递。只是有这样的说法。推荐你去秒秒学上看看相关的内容,我也是从那上面学来的。
如下示例,
//交换两个参数的值,值传参
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int a = 2, b =1;
swap(a,b); //a,b的值不会改变,因为改变的是实参a,b的副本。
另一个示例:
//所谓的“引用传参”,交换两个数值
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = tem;
}
int a =2, b = 1;
swap(&a, &b);//a,b的值改变
其实这里引用传参,传递的也是参数的副本,只是这个副本是变量a,b的地址,所以你在函数swap中你并不能通过参数改变变量a,b的地址,因为它只是一个副本,是值传递。但你得到变量的地址,你就可以访问和改变变量的内容,所以在第二个swap函数中,你可以通过*x和*y来改变实参的值,从而可以达到交换变量a,b值的效果。但这并不是引用传递。只是有这样的说法。推荐你去秒秒学上看看相关的内容,我也是从那上面学来的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |