胖子 發問時間: 電腦與網際網路程式設計 · 2 0 年前

typedef語法上的盲點

typedef char *cstring;

extern const cstring cstr;

// 在這 cstr 指的不是 const char *cstr;

// cstr 所代表的是 char *const cstr;

extern cstring const cstr2;

// 那上面這行也會與 char *const cstr; 相同嗎?

// 這兩種寫法有何差異?

1 個解答

評分
  • Lv 7
    2 0 年前
    最佳解答

    並無差異.在C/C++裡,你若用typedef來設定一個新的形態的話. 那麼那個型態的使用方法就跟int, float,和char這些基本型態一模一樣你若宣告typedef char *cstring;那表示cstring是一個新的型態.所以const cstring c; == const int c;cstring const c; == int const c;因int const c; == const int c;兩個都是把c的值設為const所以const cstring c; == cstring const c;兩個都是把c的值設為const.總結若:typedef char *cstring;那:const cstring c; == cstring const c; == char * const c;懂不懂?不懂請再問

    2006-03-30 09:48:25 補充:

    你提出的這一點是typedef和define的不同點之一

    2006-04-03 20:52:31 補充:

    "const cstring c; == cstring const c; == char * const c;

    裡面為什麼point會不見"

    能否解釋一下?

還有問題?馬上發問,尋求解答。