次のコード行について混乱しています。
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
andaa
です。私が見る方法では、 の 2 番目の文字ではなくwords[0]+1
、文字列を指す必要があるため、この理由が何であるかはよくわかりません。ここで何が起こっているのですか?bbbb
aaa