Ich bin verwirrt über die folgende Codezeile:Array von Zeigern Arrays verkohlen
char* words[] = { "aaa", "bbbb", "ccccc", "dddddd" };
So wie ich das verstehe, wird jedes Wort zuerst gespeichert und dann jede Position des Arrays words
wird zeigen Sie dann auf den ersten Charakter jedes Wortes. Wie werden diese Strings gespeichert? Gibt es hier eine dynamische Zuweisung oder werden diese Wörter auf dem Stack gespeichert?
Wenn sie auf dem Stapel gespeichert sind, auf welche Weise werden sie gespeichert? wenn ich einige der Inhalte words
wie unten Zum Beispiel drucken:
#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;
}
statt Druck aaa
und bbbb
, was ich bekommen ist aaa
und aa
. Ich verstehe nicht wirklich, was der Grund dafür ist, da die Art, wie ich es sehe, words[0]+1
auf die Zeichenfolge bbbb
und nicht auf das zweite Zeichen von aaa
zeigen sollte. Was geht hier vor sich?
Sie sind verwirrend 'Worte gedruckt werden [0] + 1 ',' (Wörter + 1) [0] 'und' Worte [1] '? –
Versuchen Sie '& words [0] + 1' – oldrinb