У меня щеколда время выяснить, как выделить память для каждой строки в массиве строк в узле, следующим образом:Невозможно определить таНос аргумент для массива строк в узле
typedef struct node {
char args[10][20];
struct node *previous;
struct node *next;
} Node;
Node * createNode(void) {
Node *newNode;
newNode = malloc(sizeof(Node));
int i;
for(i = 0; i < 10; i++) {
newNode->args[i] = (char *) malloc(sizeof(char));
}
return newNode;
}
Это приводит следующее сообщение об ошибке:
error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
newNode->args[i] = (char *) malloc(sizeof(char));
Точно так же, когда я попытался malloc(sizeof(char *))
, я получил эту ошибку:
error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
newNode->args[i] = (char *) malloc(sizeof(char *));
Я думал, что начал понимать указатели на C, но теперь я очень смущен. Любая помощь будет оценена.
Вам не нужно выделять память на символ [10] [20]. Поскольку это означает, что у вас уже достаточно памяти, выделенной для 10 массивов символов размером 20 каждый. – jayant
В любом случае 'malloc (sizeof (char))' будет выделять один байт памяти. –
И не бросайте результат 'malloc' & friends в C! – Olaf