参数与返回值
C 默认值传递:参数是副本。函数内改参数通常改不到外面——想改外部要传指针。
1. 完整例子:值传递改不动外面
| 1 | #include <stdio.h> |
| 2 | |
| 3 | void try_change(int x) { |
| 4 | x = 100; // 只改副本 |
| 5 | } |
| 6 | |
| 7 | int main(void) { |
| 8 | int a = 1; |
| 9 | try_change(a); |
| 10 | printf("a=%d\n", a); // 仍是 1 |
| 11 | return 0; |
| 12 | } |
2. 指针传递才能改到外面
| 1 | void change_real(int *x) { |
| 2 | if (x != 0) { |
| 3 | *x = 100; |
| 4 | } |
| 5 | } |
| 6 | |
| 7 | /* main 里:change_real(&a); 则 a 会变成 100 */ |
3. 返回值约定
- 成功/失败可用 0/-1 或 bool 风格整数
- void 表示无返回值
- 返回局部变量的地址是危险行为(栈上数据已失效)