typedef你用錯了麼?
標籤(空格分隔):c/c++
先看一段正常的代碼
[test1.cpp]
#include "test.h" int main() { char s[4] = "asd"; const char *ctr = s; ctr = "ksd"; return 0; }
const表示我們不能通過ctr改變s數組的值(提個醒,數組都是底層const,不過跟這個問題沒關係)。
下面的代碼是正確的嗎?
[test2.cpp]
#include "test.h" typedef char * pstring; int main() { char s[4] = "asd"; const pstring ctr = s; ctr = "lks"; return 0; }
請看下面的執行結果
error提示表示當前的ctr是一個只讀變量,好像ctr是一種頂層const修飾的變量。爲什麼呢?因爲上述test2.cpp代碼中,pstring表示char型指針,也就是說pstring的類型是指針。那麼,
const pstring
就是一個常量指針,當然不能修改該指針存儲的地址。我們再看test1.cpp中的const char *ctr
,如果拆分來看的話ctr從右向左分析,*ctr是一個整體,而const char成爲基本的數據類型,即const char *ctr
表示的是一個指向char類型常量的指針。