我有一個問題列表,我想問一下探究嵌入式系統編程的候選C語言技能。我有一個標準問題,這也是很多公開問題列表中的一個,但我開始認爲這是一個糟糕的問題:C(不是C++)通過價值/參考面試問題
「解釋或對比傳遞值和傳遞 - 在C參考「
我告訴受訪者,這個問題與C++引用無關,我正在尋找一個傳遞指向變量與變量的指針的解釋,以及被調用者如何修改引用的變量由指針。有關如何將指針傳遞給結構更有效的解釋的額外要點。
下面是問題:C中是否真的有「通過引用傳遞」?
被調用者的簽名明確定義了傳遞的內容。這並不是說你可以將x或& x傳遞給一個函數,並讓編譯器找出該做什麼。所以我會爭辯說,一切都是C傳遞值,傳遞引用實際上只是傳遞一個指針的值。
有一些關於
void f(int *xarg);
...
int x;
int *xp = &x;
f(xp);
與根本不同
f(&x);
感謝, 安德魯
嘗試用語言中立的術語來表達這個問題:你將如何去實現一個接受X的函數並且做Y到它? FlyWeight模式的優點是什麼,你可以在C中描繪一個實現嗎? – sehe 2011-05-18 21:21:55
@sehe「FlyWeight模式」是否是語言中立?我認爲自己在C語言流利,我從來沒有聽說過它。我可以回答被矇住眼睛的原始面試問題,雖然我目前沒有找工作,但我不願意被問及你的語言中立性問題,接受C相關工作的面試。 – 2011-05-18 21:33:55
我表現出創造性思維。另外,FlyWeight是一種模式。它是語言中立的(很像NullObject和Memento之類的模式) – sehe 2011-05-18 21:37:35