相关疑难解决方法(0)

通过C中的引用传递

如果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;
}
Run Code Online (Sandbox Code Playgroud)

产量

$ gcc -std=c99 test.c
$ a.exe
i = 21 
Run Code Online (Sandbox Code Playgroud)

c pointers pass-by-reference

200
推荐指数
11
解决办法
34万
查看次数

指针是否被认为是在C中通过引用调用的方法?

在我大学的C编程课程中,教授及其后来的书在引用C中的指针时使用了术语调用或通过引用传递.

我的教授称之为"参考函数调用"的一个例子:

int sum(int *a, int *b);
Run Code Online (Sandbox Code Playgroud)

我的教授称之为"价值函数呼叫"的一个例子:

int sum(int a, int b);
Run Code Online (Sandbox Code Playgroud)

读过 C不支持通过引用调用.根据我的理解,指针通过值传递.

基本上,说指针是C通过引用传递的方式是不正确的吗?说你不能通过C中的引用传递但是可以使用指针替代它会更正确吗?


2015年11月11日更新

从我的问题起源的方式来看,我认为术语的争论已经产生,实际上我看到了两个具体的区别.

  • pass-by-reference(主要用于今天的术语):C++等语言中使用的特定术语
  • pass-by-reference(我的教授用来解释指针的范例):在C++之类的语言开发之前使用的一般术语,因此在术语被重写之前

在阅读了@Haris的更新答案之后,为什么这不是那么黑白,这是有道理的.

c pointers pass-by-reference

65
推荐指数
7
解决办法
6566
查看次数

标签 统计

c ×2

pass-by-reference ×2

pointers ×2