c语言 函数参数传递函数
时间: 2024-10-03 18:03:54 浏览: 39
在C语言中,函数参数的传递有三种方式:值传递、地址传递(传址)和指针传递。
1. **值传递**(Pass by Value):这是默认的参数传递方式,当函数接收参数时,系统会复制实参的值到形参。这意味着对形参的操作不会影响实际的变量。例如:
```c
void increment(int num) {
num++;
}
int main() {
int a = 5;
increment(a); // 主函数中的a不会改变
return 0;
}
```
2. **地址传递**(Pass by Reference):通过取地址符&操作符提供给函数的是实参的内存地址,可以直接修改原始变量的值。但这在C语言中并不直接支持,需要借助指针间接实现:
```c
void increment_ptr(int *num) {
(*num)++;
}
int main() {
int a = 5;
increment_ptr(&a); // a的值会被修改为6
return 0;
}
```
3. **指针传递**(Pass by Pointer):是最常见的做法,通过将指针作为参数传递,可以修改指向的数据,这既包括值传递也包括地址传递。例如:
```c
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a = 5, b = 10;
swap(&a, &b); // 直接交换了a和b的值
return 0;
}
```
阅读全文