我对以下代码行感到困惑:
char* words[] = { "aaa", "bbbb", "ccccc", "dddddd" };
我理解的方式是,首先存储每个单词,然后数组的每个位置words
将指向每个单词的第一个字符。这些字符串是如何存储的?这里是否正在进行动态分配,或者这些单词是否存储在堆栈中?
如果它们存储在堆栈中,它们以哪种方式存储?例如,如果我打印words
如下的一些内容:
#include <stdio.h>
int main () {
char* words[] = { "aaa", "bbbb", "ccccc", "dddddd" };
printf("\n\n(*words)[0] = %s", words[0]);
printf("\n\n(*words)[0]+1 = %s", words[0]+1);
return 0;
}
而不是打印aaa
and bbbb
,我得到的是aaa
and aa
。我真的不明白这是什么原因,因为在我看来,words[0]+1
应该指向字符串bbbb
而不是aaa
. 这里发生了什么?