我正在阅读c ++ Primer,这个代码片段出现了,我想知道sizeof(char *)做了什么,为什么它如此重要?
char *words[] = {"stately", "plump", "buck", "mulligan"};
// calculate how many elements in words
size_t words_size = sizeof(words)/sizeof(char *);
// use entire array to initialize words2
list<string> words2(words, words + words_size);
提前致谢。
答案 0 :(得分:8)
因为否则你将得到字数组占用的字节数,而不是元素数(在英特尔架构上字符串指针是4或8字节)
答案 1 :(得分:6)
sizeof(char*)
返回系统的指针大小。 sizeof(words)返回数组中的字节数。由于数组中的每个元素都是sizeof(char*)
大,因此元素的数量是number_of_bytes / bytes_per_element,因此sizeof(words)/sizeof(char*)
。