2022年2月26日 星期六

C 字串和 const

變數的資料型別 const 修飾後變成「唯讀」,除了初始值外,不能再指定值。

char a[] = "test"; // 可修改的字串,配置 5 bytes 空間 (不考慮對齊的話)。

char *b = a; // 一個指標,可以動態指到不同的可改字串。

const char c[] = "Test"; // 內容為 const char 的陣列 (不能改的字串)

const char *d = a; // 內容為 const char *,是一個指標,而這個指標指到 const char。指標本身可以改,指標指到的內容不能改。可以動態指到不同的不可改字串,也可以指到可改字串 (變成不可改)。

b = (char *)d; //

char * const e; // const 修飾變數本身,而不是 char。一個不能改的指標,但指到的字串可以修改。

const char * const f; // 一個不能改的指標,指到的字串也不能修改。

const int &g=100; // 常數引用,即不能改變引用的值。

二維

const char e[][] = {"str1", "str12", "str123"}; // 3 * 7 的二維 char 陣列,內容不能變,e[0] 是 "str1"

const char *f[] = {"Str1", "Str12", "Str123"}; // 指標陣列,每個可以動態指到不同的字串。初始值使用的空間 5 + 6 + 7。

const char **g; // 一個指標

char * const h[];

參考

https://www.youtube.com/watch?v=R2rhMxtjuv0

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...