请分别写出值传递 指针传递 引用传递的代码 并解释每一行代码 解释他们的区别 并得出代码结果
时间: 2024-03-24 22:40:12 浏览: 54
值传递、指针传递、引用传递是函数传递参数的三种方式,它们的区别在于传递方式不同,下面分别给出三种传递方式的代码和解释:
1. 值传递
值传递是指将参数的值复制一份给函数参数,函数内部对参数的修改不会影响到函数外部的值。
```
#include <stdio.h>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
swap(x, y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
```
上面的代码中,swap函数采用值传递的方式传递参数,对参数进行交换。在main函数中,调用swap函数交换x和y的值。但是由于swap函数中的参数是值传递的,因此对参数的修改不会影响到main函数中的x和y变量。因此,最终输出的结果是x = 10, y = 20。
2. 指针传递
指针传递是指将参数的地址传递给函数,函数内部可以通过指针来访问和修改参数的值。函数内部对指针所指向的值的修改会影响到函数外部的值。
```
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
swap(&x, &y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
```
上面的代码中,swap函数采用指针传递的方式传递参数,对参数进行交换。在main函数中,调用swap函数交换x和y的值。由于swap函数中的参数是指针类型,因此可以通过指针来访问和修改参数的值。因此,最终输出的结果是x = 20, y = 10。
3. 引用传递
引用传递是指将参数的引用(别名)传递给函数,函数内部可以通过引用来访问和修改参数的值。函数内部对引用所指向的值的修改会影响到函数外部的值。
```
#include <stdio.h>
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
swap(x, y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
```
上面的代码中,swap函数采用引用传递的方式传递参数,对参数进行交换。在main函数中,调用swap函数交换x和y的值。由于swap函数中的参数是引用类型,因此可以通过引用来访问和修改参数的值。因此,最终输出的结果是x = 20, y = 10。
总的来说,值传递、指针传递、引用传递是函数传递参数的三种方式,它们的区别在于传递方式不同。值传递是将参数的值复制一份给函数参数,函数内部对参数的修改不会影响到函数外部的值;指针传递是将参数的地址传递给函数,函数内部可以通过指针来访问和修改参数的值,函数内部对指针所指向的值的修改会影响到函数外部的值;引用传递是将参数的引用(别名)传递给函数,函数内部可以通过引用来访问和修改参数的值,函数内部对引用所指向的值的修改会影响到函数外部的值。
阅读全文