【发布时间】:2014-12-21 13:35:38
【问题描述】:
这是代码,
char const *words[] ={
"Hello",
"What are you doing",
0
};
int size = sizeof(words[1]), totalSize = sizeof(words);
totalSize 的值是 24,但 size 的值是 8。我使用 gdb 进行运行时查看,因为命令 p words[1] 结果是 $1 = 0x40400f "What are you doing" 所以 words[1] 被调试器视为数组,仍然 sizeof() 将其视为指针。我不明白为什么会这样。
【问题讨论】:
-
words[1]是指向以空字符结尾的字符串的指针。您(64 位)平台上的指针大小为 8 个字节。调试器向您显示指向字符串的内容这一事实并不意味着编译器引用了words[1]。