[英]Size of array of pointers to char
你是正確的,在 memory 的某個地方占用了 15 個字節。 但這些信息通常是沒有用的。
對於char str[] = "1";
, sizeof(str)
與sizeof(char*)
相同,它始終是指針的大小(在 32 位設置中為 4 個字節)
對於char str[] = "1234567";
sizeof(str)
仍然相同(使用strlen
作為字符串的長度)
如果你有 5 個str
,那么它的大小是 4 x 5。
您可以使用sizeof(arrChar)/sizeof(*arrChar)
來獲取數組中的元素總數。
在您的示例中,實際數據是存儲在 memory 的某些只讀部分中的字符串文字。 數據沒有在arrChar
內部分配,只是數據的地址。
無論您將每個指針設置為指向什么, sizeof(arrChar)
都將始終產生sizeof(char*) * 5
。 如果指針大小為 4 字節,則 4*5=20。
*char 指針每個元素占用 4 位。 由於您的列表中有 5 個元素,即使是普通的 char 也占用 3 位,但由於您的指針占用 4 位,所以它需要 20 位,而不是 15 位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.