[英]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.