C(不是C++)通过值/参考面试问题

And*_*ser 2 c calling-convention

我有一个问题列表,我想要探究嵌入式系统编程的候选C技能.我有一个标准问题,也是很多公共问题列表,但我开始认为这是一个糟糕的问题:

"在C中解释或对比传值和传递参考"

我告诉受访者这个问题与C++引用无关,我正在寻找一个向变量和变量传递指针的解释,以及被调用者如何修改指针引用的变量.关于如何将指针传递给结构的解释的额外点更有效.

这是一个问题:在C中真的有"通过引用传递"吗?

被呼叫者的签名清楚地定义了传递的内容.这不像你可以将x或&x传递给函数并让编译器弄清楚要做什么.所以我认为一切都是C传递值,传递引用实际上只是传递一个指针的值.

有什么根本不同的东西

void f(int *xarg);
...
int x;
int *xp = &x;
f(xp);
Run Code Online (Sandbox Code Playgroud)

f(&x);
Run Code Online (Sandbox Code Playgroud)

谢谢,安德鲁

Eti*_*tel 11

在C中没有参考通过.

你可以得到的最接近的是传递指针,它实际上是一个值传递(除了它是复制的指针,而不是指向的对象).

所以,你是对的.


小智 5

不 - 在C中没有通过引用传递 - 一切都是按值传递的.但是我认为对于受访者来说,如果他们用指针解释了参考文献并且你因为这个原因拒绝了他们,那将会有点困难,除非你正在寻找语言律师.