C语言值传递和引用传递
时间: 2024-12-03 19:13:16 浏览: 25
在C语言中,函数参数传递有两种基本方式:值传递和引用传递。
1. **值传递**(Pass by Value):这是默认的方式,当函数接收一个变量作为参数时,系统实际上是复制该变量的副本。函数内部对这个副本的操作不会影响到原始变量。例如:
```c
void increment(int num) {
num++; // 只改变了副本的值
}
int main() {
int x = 5;
increment(x);
printf("%d\n", x); // 输出还是5,因为x本身的值未变
}
```
2. **引用传递**(Pass by Reference):虽然C语言本身不直接支持引用,但可以间接通过指针实现类似的效果。如果使用指针作为参数,函数可以直接修改指针所指向的数据。比如:
```c
void increment_by_ref(int *num) {
(*num)++; // 直接修改了指针所指向的值
}
int main() {
int y = 5;
increment_by_ref(&y); // 通过地址修改y
printf("%d\n", y); // 输出6,因为y的值已经被改变
}
```
注意,在C语言中没有真正的“引用”概念,`&`运算符通常用于获取指针地址而不是创建引用。
阅读全文