2008/06/07

C語言union面試問題,被考倒了!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
struct {
 char *name;
 int flags;
 int utype;
 union
 {
  int ival;
  float fval;
  char *pval;
 } uval;

C 語言面試時,先來個紙上測試對C的了解程度,一般只學程式語言皮毛的人,真的很少會用union ,能了解struct 就不錯了。一般軟體開發也少有使用union。其主要目的是節省記憶體空間的使用。

題目: 寫出要參考到 ival 的值語法為何 ?

答案: symtab[0].uval.ival; 竟然忘了, 真的被考倒了! 太多年沒用了.

sturct 中有 name, flags, utype 及 uval 四個成員變數, uval 是 union 型態。

題目: (*ptr)[m] 與 *ptr[m] 有何不同 ? 只會一半, 又被考倒了 !

(*ptr)[m] : 已先用括號括起來, 先以先看 *ptr

*ptr[m] : 若 ptr[m] 內容存的是 pointer(指標) , 前面再加個 *, 表示取出 ptr[m]  指向位址中的值

其實,可以使用sizeof() 來驗證是否有善用記憶體空間。