15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:
#define dps struct s *
typedef struct s * tps;
以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?(如果有的話)為什麼?
這是乙個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:
dps p1,p2;
tps p3,p4;
第乙個擴充套件為
struct s * p1, p2;
.上面的**定義p1為乙個指向結構的指,p2為乙個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指標。
晦澀的語法
16 . c語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什麼?
int a = 5, b = 7, c;
c = a+++b;
這個問題將做為這個測驗的乙個愉快的結尾。不管你相不相信,上面的例子是完全合乎語法的。問題是編譯器如何處理它?水平不高的編譯作者實際上會爭論這個問題,根據最處理原則,編譯器應當能處理盡可能所有合法的用法。因此,上面的**被處理成:
c = a++ + b;
因此, 這段**持行後a = 6, b = 7, c = 12。
如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個當作問題。我發現這個問題的最大好處是這是乙個關於**編寫風格,**的可讀性,**的可修改性的好的話題。
好了,夥計們,你現在已經做完所有的測試了。這就是我出的c語言測試題,我懷著愉快的心情寫完它,希望你以同樣的心情讀完它。如果是認為這是乙個好的測試,那麼盡量都用到你的找工作的過程中去吧。天知道也許過個一兩年,我就不做現在的工作,也需要找乙個。
作者介紹:
nigel jones 是乙個顧問,現在住在maryland,當他不在水下時,你能在多個範圍的嵌入專案中找到他。 他很高興能收到讀者的來信,他的email位址是:
參考文獻
1) jones, nigel, "in praise of the #error directive," embedded systems programming, september 1999, p. 114.
2) jones, nigel, " efficient c code for eight-bit mcus ," embedded systems programming, november 1998, p. 66.
嵌入式面試題
1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...
嵌入式面試題
以下是我找嵌入式面試時遇到的一些問題,答案以後慢慢補充。1.incline和巨集定義的區別 3.linux自旋鎖 4.程序,執行緒的概念 5.strcpy的使用,具體實現 6.雙向鍊錶的插入,刪除 7.大端小端概念 8.寫一段c程式檢測cpu是32位還是64位 9.malloc和new的使用 10....
嵌入式面試題
如果是同步io,當乙個io操作執行時,應用程式必須等待,直到此io執行完,相反,非同步io操作在後台執行,io操作和應用程式可以同時執行,提高系統效能,提高io流量 在同步檔案io中,執行緒啟動乙個io操作然後就立即進入等待狀態,直到io操作完成後才醒來繼續執行,而非同步檔案io中,執行緒傳送乙個i...