web-dev-qa-db-ja.com

Cには参照がありますか?

Cには参照がありますか?つまり、C++のように:

void foo(int &i)
30
jacky jack

いいえ、そうではありません。 ポインタがありますが、まったく同じではありません。

特に、Cのすべての引数は、C++のように参照渡しが利用できるのではなく、値によって渡されます。もちろん、ポインタを介してsimulateの参照渡しを並べ替えることができます。

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++でもないので、私に聞かないでください。プログラマー:)

40
Jon Skeet

ポインタは他のオブジェクトを参照するため、概念的にはCには参照があります。

構文的には、CにはC++のように参照がありません。

16
sbi