2016-05-20 5 views
-3

Ich habe diese StrukturAllokierung von Speicher **

typedef struct{ 
char **palavras; 
}no; 

und ich möchte Speicher auf dieses Array von Strings zuzuweisen grundsätzlich

und ich kann dies nicht tun, da es sagt, es ist etwas erwartet vor die '('

no *atual; 

atual->(*palavras)=calloc(1,sizeof(char*)); 
+0

Possible Duplikat [Speicher 2D-Array in Funktion C Vergeben] (http://stackoverflow.com/questions/15062718/allocate-memory-2d-array-in-function-c) –

+0

@ keny-N: Obwohl die verknüpfte Frage den Begriff "2D-Array" verwendet, ist dies kein 2D-Array. Da wir nicht wissen, was OP beabsichtigt, muss man sagen, ob er ein 2D-Array oder den Zeiger auf ein Zeiger-Konstrukt haben möchte, das ** nicht ** ein 2D-Array ist, noch kann es auf eins zeigen. – Olaf

Antwort

2

Sie müssen es in mehreren Stufen tun:

  • Zuerst weisen Speicher auf atual,
  • Als nächsten Speicher palavras
  • zuteilen Schließlich weisen Speicher auf Elemente von palavras

Angenommen, Sie müssen 10 palavras zuweisen, können Sie es wie folgt tun:

no *atual = malloc(sizeof(no)); 
atual->palavras = malloc(sizeof(char*)*10); 
atual->palavras[0] = malloc(20); 
... 
+0

oh danke, ich verstehe es, ich machte das Oppossum, ich habe dir gesagt, dass du Speicher für Palavras reservierst mit **, mein schlechtes ja: / –

-1

sollten Sie greifen palavras von atual->palavras, zB atual->palavras = calloc(5, sizeof(char *)) und dereferenzieren die char ** von *atual->palavras. Sie können auch Speicher für die char * Zeiger von atual->palavras von, sagen wir, atual->palavras[0] = malloc(10 * sizeof(char)) zuweisen.