組み込みシステム プログラミングの C スキル候補を調査するために、私が聞きたい質問のリストがあります。私が持っている標準的な質問の 1 つで、多くの公開質問リストにも載っていますが、これは悪い質問だと思い始めています。
「C の値渡しと参照渡しを説明または対比する」
質問は C++ 参照とは何の関係もないことをインタビュー対象者に伝え、変数へのポインターと変数へのポインターの受け渡しの説明と、呼び出し先がポインターによって参照される変数を変更する方法を探しています。ポインターを構造体に渡すことがより効率的である方法についての説明のための追加のポイント。
ここで質問です: C には本当に「参照渡し」がありますか?
呼び出し先の署名によって、何が渡されるかが明確に定義されます。x または &x のいずれかを関数に渡して、コンパイラに何をすべきかを理解させることができるわけではありません。したがって、すべてがCであり、値渡しであり、参照渡しは実際にはポインターの値を渡すだけであると主張します。
根本的に違うところはありますか
void f(int *xarg);
...
int x;
int *xp = &x;
f(xp);
対。
f(&x);
ありがとう、アンドリュー