c - 为什么要使用变量的地址来改变变量的值?

标签 c pointers

page 15我的讲座幻灯片中有一个示例。

int x = 10;
increment_int(x); // can’t change the value of x
increment2_int(&x); // can change the value of x

我不明白为什么第一个函数 increment_int(x)无法改变x的值。虽然我不知道这些函数到底是做什么的,但我猜它们正在为参数增加一些量。

最佳答案

  • increment_int 是按值传递。如果函数increment_int改变 其参数的值,仅反射(reflect)在其本地副本中。 调用者看不到更改。
  • increment2_int 通过引用传递。你传递 x 的地址而不是 该函数的 x 值。该函数改变的值 位于指定的地址,该地址也反射(reflect)在调用方。

关于c - 为什么要使用变量的地址来改变变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583918/

相关文章:

c++ - C/C++ 声音操作系统 API

c - 从H264规范中如何理解这一行

指向具有指针元素的结构的 C 指针 - 如何分配内存并用作函数输出

c - 函数返回指向字符串的指针

你能解释一下以下 C 代码的输出吗?

c - 如何从 C/txt 中的 TXT 文件转换二进制文件(仅包括 int/)

c - 访问嵌套结构成员的多种方式

c - 如何使用 scanf() 扫描其中包含空格的字符串?

pointers - "pointer to interface, not interface"

c - 为什么 pthread_join() 的第二个参数是一个 **,一个指向指针的指针?