C Deklarieren von array von char*
Ich dachte, Sie könnten ein array deklarieren, und dann später initilze es.
Wie so
char* myArray[3];
//CODE INBETWEEN
myArray[3] = {
"blah",
"blah",
"blah"};
- Sie deklarieren ein array von Zeichen Zeigern. Jeder Zeiger brauchen würde, um auf einem dynamischen oder statischen Puffer vor der Verwendung von strcpy() oder andere string-Operationen, um den Inhalt zu ändern.
- Also ich muss initlize und gleichzeitig erklären?>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Sie können nur initialisieren ein array, wenn Sie ersten erklären es. Der Grund ist, dass arrays sind nicht änderbar lvalues.
In Ihrem Fall:
Müssen Sie nicht angeben, die Größe, aber Sie können, wenn Sie wollen. Jedoch, die Größe kann nicht kleiner sein als 3 in diesem Fall. Auch die drei strings geschrieben werden, nur-lese-Speicher so etwas wie
array[1][2] = 'c'
ändern Sie die 2. "blabla" auf "blch" führt in der Regel zu einem segfault.Wie schon andere gesagt haben Sie können nur initialisers, wenn die variable deklariert ist. Die nächste Möglichkeit, das zu tun, was Sie wollen, ist:
Ja, Sie können ein array deklarieren und dann später initialisieren.
Es ist jedoch hier eine Ausnahme.
Erklären Sie eine character pointer array (das geklappt).
Und, dann sind Sie instanziieren Konstante Zeichenfolgen zuordnen, um das array.
Ist, wo das problem beginnt.
Konstante strings sind nur compiler-primitive, die nicht bekommen, eine adressierbare Speicherbereich in der Weise, die du Sie benutzt haben. Sie können zugeordnet werden, direkt auf die array-Initialisierung Zeit (als
Mike
gezeigt hat); das wird den compiler anweisen, zuweisen, Sie als Konstanten zur Laufzeit verfügbar und erlauben eine Initialisierung, wenn der Umfang dermyArray
beginnt.Was Sie versucht haben, gut funktioniert hätte mit
Hilft es zu beachten, dass ein Zeichen Zeiger-und string-Instanz sind zwei verschiedene Personen; der erste Punkt für die zweite.
initialization
. Aber ich glaube nicht, dass die Frage, bedeutete das Wort in diesem Sinn.Du falsch gedacht. Die Initialisierung ist nur möglich bei Erklärung. Danach können Sie nur die Zuordnung der einzelnen Werte.
Es ist ein Initialisierer Ausdruck. Kann nicht sein, dass code in zwischen, habe zu eingesetzt werden auf der Linie mit Erklärung.
Es ist nicht genau klar, welche realen Welt Probleme Sie versuchen zu lösen, hier...
... das ist möglich in so viele Möglichkeiten, aber für die Zwecke dieser Frage, ich will das Augenmerk auf die Deklaration ein array innerhalb eines
struct
.Technisch gesehen ist dies die Initialisierung eines verschiedenen array (innerhalb ein anonymes Objekt), gefolgt von einer Zuordnung des gesamten
struct
. Es könnte sinnvoll sein, lösen Sie Ihre realen Welt Probleme (was auch immer das ist)... aber ich hoffe es wird letztlich hilfreich sein für jemand anderen, später zu wissen, dass Sie zuordnen könnenstruct
s mit arrays innerhalb von Ihnen...