C有引用吗?

jac*_*ack 27 c reference

C有引用吗?即在C++中:

void foo(int &i)
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 46

不,它没有.它有指针,但它们并不完全相同.

特别是,C中的所有参数都是通过值传递的,而不是像C++中那样可以通过引用传递.当然,您可以通过指针模拟传递引用:

void foo(int *x)
{
    *x = 10;
}

...

int y = 0;
foo(&y); // Pass the pointer by value
// The value of y is now 10
Run Code Online (Sandbox Code Playgroud)

有关指针和引用之间差异的更多详细信息,请参阅此SO问题.(请不要问我,因为我不是C或C++程序员:)

  • Jon在'C'问题中 - 欢迎从黑暗面回来! (6认同)

sbi*_*sbi 16

从概念上讲,C有引用,因为指针引用其他对象.

从语法上讲,C没有C++那样的引用.

  • @ Hi-Angel _Conceptually_,指针引用一个对象. (3认同)
  • @sbi 我使用你的术语是为了避免混淆。由于某种原因,它没有成功。我对此事的术语是“null 和引用的代数数据类型”*(或较少使用,但我个人偏好“null 和引用的余积”)*,并且您不能替换 null → long 和引用 → Leg,并且还是得到一些明智的东西。 (3认同)
  • 错,概念上的指针和引用是完全不同的.指针是null和引用的代数数据类型.参考就是参考.这意味着类型安全 - 如果一个函数意味着获得一个null参数,它可以立即被看到. (2认同)
  • @Hi-Angel:所以指针是一个可为空的引用。_耸耸肩。__一般来说_,这并不能阻止指针成为引用。 (2认同)
  • @ Hi-Angel:你刚才说_ <形容词> _引用不是引用?那么_长腿不是一条腿?_red_地毯不是地毯?_Snort._你似乎在C++中坚持使用"reference"的语法定义,并且没有看到它背后的概念._手._ (2认同)