skip to content
YoungLee的手帐

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

/ 3 min read

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

值传递

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

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

int change(int x) {
x = 100;
return 100;
}
int main() {
int a = 10;
printf("%d\n", a); // 输出 10
change(a);
printf("%d\n", a); // 输出 10
}

引用传递

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

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

    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
    }

总结

  • 了解C语言函数参数的传递方式,对于理解和编写C语言程序非常重要。
  • 在需要改变实参的值时,可以使用引用传递。

额外知识

  • 指针变量本质上是一个存储了内存地址的变量。
  • 函数调用指针变量的时候,会改变指针变量指向的值,而不是复制一份。
  • 函数内部对指针变量的赋值操作,不会改变指针变量本身的值。

附:

值传递

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

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

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

C语言中的值传递

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

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

引用传递

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

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

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