2016-10-13 20 views
-1

我想獲得字符數組的大小,但我不能這樣做Ç郎的sizeof(的char [])獲取靜態大小

讓看到

#define MAX 64 

char value[MAX] 

value = "hi" //or something initialization 
sizeof("hi") //result = 3 
sizeof(value) // result = 64 

我想sizeof("hi") == sizeof(value) 怎麼着怎麼辦?

+1

這是否甚至編譯?我不知道你可以像第5行那樣分配一個數組。 –

+0

哦,但是你有更多的語法錯誤,所以這只是一個例子。沒關係。 –

+0

'strlen(value)== 2' – reuns

回答

2

在包含的代碼片段中,實際上將value的大小設置爲64.結果sizeof(value)將返回64 * sizeof(char)。 這是正確的,無論您將數組放入value

也許你想要做的是讓數組在編譯時自動調整大小?例如

char value[] = "hi"; 
int value_size = sizeof(value); // value_size will now equal 3, as the array contains { 'h', 'i', '\0' } 
0

sizeof(value),與char value[MAX]返回char的大小由MAX倍增。因此,存儲在value中的字符串的長度將永遠不會是value的大小。