2016-06-29 7 views
-1

Ich habe versucht, mit Strukturen zu experimentieren und kam zu einem Problem Wenn ich bin, Daten einem Zeichenarray eines Strukturelements zuweisen, verwendet der Zeiger einen Fehler : "Zuordnung zu Ausdruck mit Array-Typ". In meinem Code weiß ich, dass ein Array statische Speicherzuweisung verwendet und Zeiger verwendet malloc für die dynamische Speicherzuweisung. Kann mir jemand sagen, wie ich das Problem lösen kann? Code for passing the structure pointer to a function to print the structure dataZuordnung von Daten zum Zeichenarray eines Strukturelements mit Zeiger

Antwort

0

In Ihrem Beispiel 'c' ist ein Array von 20 Bytes, so könnten Sie strcpy verwenden:

strcpy(struct_pointer->c, "hellos"); 
-1

Denken Sie daran, dass "Hallos" ist nicht die gleiche Art mit char [20], so sollten Sie versuchen Sie dies:

strcpy(struct_pointer->c, "hellos"); 

statt Zuordnung eine const char*-char[20] Variable

0

Ihr Code

struct_pointer->c="hellos" 

tatsächlich Compiler sagt folgendes tun - für String "hellos" Plus Nullabschluss Speicher zuordnen und den Zeiger auf diesen Speicher zu struct_pointer->c zuweisen, die bereits zugeordnet ist, so Compiler Beschwerde ist vollkommen gültig. In C können Sie nicht nur einen char-Array zu einem anderen Array zuweisen, müssen Sie jede Art von Speicher-Kopierfunktion verwenden, zum Beispiel

strcpy(struct_pointer->c, "hellos") 

In my code I know that an array uses static memory allocation and pointer uses malloc for dynamic memory allocation

Es ist nicht so, dass in C bekommt man nicht automatische dynamische Speicherzuordnung, es sei denn Sie rufen malloc oder seine Varianten explizit auf. Speicher für "hellos" ist auch auf dem Stapel

zugeordnet
Verwandte Themen