簡體   English   中英

獲取多維數組C中項目的長度

[英]Get length of item in multiple dimension array C

我用以下方法構造一個數組:

char *state[] = {"California", "Oregon", "Texas"};

我想得到的加利福尼亞的長度應該是10,但是當我執行sizeof(state [0])時,它只給我8(我認為這意味着8個字節,因為char的大小是1個字節)。 但是,為什么是8個而不是10個呢? 我仍然可以通過遍歷state [0] [i]來打印出加利福尼亞的每個字符。

我是C語言的新手,有人可以向我解釋一下嗎?

最簡單的解釋是sizeof是一個編譯時評估的表達式。 因此,它對字符串的長度一無所知,而字符串的長度本質上是需要在運行時進行評估的。

要獲取字符串的長度,請使用strlen 這將返回包含隱式null終止符的字符串長度,該隱含null終止符告訴C運行時該字符串的末尾在哪里。

另一件事,在設置字符串數組時使用const char* []是一個好習慣。 這強化了以下事實:修改任何數組內容是未定義的行為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM