如果C语言不支持通过引用传递变量,为什么这样做呢?

#include <stdio.h>

void f(int *j) {
  (*j)++;
}

int main() {
  int i = 20;
  int *p = &i;
  f(p);
  printf("i = %d\n", i);

  return 0;
}

输出:

$ gcc -std=c99 test.c
$ a.exe
i = 21 

当前回答

C中没有引用传递,但是p“指向”i,你通过值传递p。

其他回答

“通过引用传递”(通过使用指针)从一开始就存在于C语言中。你为什么不这么认为?

因为你传递了一个指向变量p的指针(内存地址)到函数f中。换句话说,你传递的是一个指针而不是一个引用。

P是一个指针变量。它的值是i的地址。当你调用f时,你传递p的值,它是i的地址。

因为你把指针的值传递给了方法然后对它进行解引用以得到所指向的整数。

C中没有引用传递,但是p“指向”i,你通过值传递p。