我对以下代码行感到困惑:
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;
}
而不是打印aaaand bbbb,我得到的是aaaand aa。我真的不明白这是什么原因,因为在我看来,words[0]+1应该指向字符串bbbb而不是aaa. 这里发生了什么?
