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
和bbbb
,但是我得到的是aaa
和aa
。我不太明白这个原因,因为在我的理解中,words[0]+1
应该指向字符串bbbb
而非aaa
的第二个字符。请问这里发生了什么事情?
words[0] + 1
、(words + 1)[0]
和words[1]
感到困惑? - Kerrek SB