YoungLee的手帐

Young Lee

C 学习笔记-3.指针中参数传递方式总结

33
1
0
2024-03-11

C语言中函数参数的传递方式主要有两种:值传递和引用传递。

值传递

- 函数内部只能得到实参的一个副本,对副本的赋值操作不会影响到实参。

- 默认情况下,C语言函数参数的传递方式是值传递。

void change(int *ptr) {
  *ptr = 100;
}

int main() {
  int a = 10;
  int *ptr = &a;

  printf("%d\n", a); // 输出 10

  change(ptr);

  printf("%d\n", a); // 输出 100
}

引用传递

- 函数内部能够直接访问实参,并可以改变实参的值。

- 使用&符号可以实现引用传递。

  void change(int *ptr) {
  ptr = &a; // 改变 ptr 指向的地址
}

int main() {
  int a = 10;
  int b = 20;
  int *ptr = &a;

  printf("%d\n", *ptr); // 输出 10

  change(ptr);

  printf("%d\n", *ptr); // 输出 10

  printf("%p\n", ptr); // 输出 0x1000
}

总结

- 了解C语言函数参数的传递方式,对于理解和编写C语言程序非常重要。

- 在需要改变实参的值时,可以使用引用传递。

额外知识

- 指针变量本质上是一个存储了内存地址的变量。

- 函数调用指针变量的时候,会改变指针变量指向的值,而不是复制一份。

- 函数内部对指针变量的赋值操作,不会改变指针变量本身的值。

附:

值传递

假设你有一个装满10个苹果的篮子,你想把这个篮子送给朋友。

在值传递中,你把篮子里的苹果复制一份,然后把复制的苹果送给朋友。

这样,你的朋友就得到了10个苹果,但你的篮子里的苹果数量并没有改变。

C语言中的值传递

在C语言中,函数参数的默认传递方式是值传递。

这意味着,当你把一个变量作为参数传递给函数时,函数内部只会得到该变量的一个副本。

引用传递

如果你想让函数内部能够改变实参的值,你需要使用引用传递。

在引用传递中,你把篮子的地址送给朋友。

这样,你的朋友就能够直接访问你的篮子,并可以改变篮子里的苹果数量。