C语言指针值传递和地址传递
时间: 2023-11-22 09:04:51 浏览: 188
C语言中的函数参数传递有两种方式:值传递和地址传递。对于指针类型的参数,可以通过地址传递来实现指针的传递。
值传递:将实参的值复制一份传递给形参,函数内部对形参的修改不会影响到实参的值。对于指针类型的参数,值传递只是将指针的值复制一份传递给形参,形参和实参指向同一块内存区域,但是函数内部对形参指针的修改不会影响到实参指针的值。
地址传递:将实参的地址传递给形参,函数内部对形参的修改会影响到实参的值。对于指针类型的参数,地址传递可以直接传递指针的地址,函数内部对形参指针的修改会影响到实参指针的值。
以下是两个例子,分别演示了值传递和地址传递的情况:
值传递:
```c
#include <stdio.h>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 1, y = 2;
swap(x, y);
printf("x=%d, y=%d\n", x, y); // 输出:x=1, y=2
return 0;
}
```
地址传递:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 1, y = 2;
swap(&x, &y);
printf("x=%d, y=%d\n", x, y); // 输出:x=2, y=1
return 0;
}
```
阅读全文