【发布时间】:2010-11-29 16:19:19
【问题描述】:
C 有引用吗?即在 C++ 中:
void foo(int &i)
【问题讨论】:
C 有引用吗?即在 C++ 中:
void foo(int &i)
【问题讨论】:
不,它没有。它有指针,但它们并不完全相同。
特别是,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
有关指针和引用之间差异的更多详细信息,请参阅this SO question。 (请不要问我,因为我不是 C 或 C++ 程序员 :)
【讨论】:
从概念上讲,C 有引用,因为指针引用其他对象。
从句法上讲,C 不像 C++ 那样具有引用。
【讨论】:
0 的对象,尽管这意味着标准对空指针只字未提——我不知道这是否属实。在任何情况下,有一种广泛建立的做法是使用空值来专门表示“指针不引用任何东西”,直到我怀疑是否存在使用 null 来实际引用空地址的代码,也许如果利用. IOW 即使标准不以任何特殊方式处理空指针,在概念上空指针也不会引用任何内容。