我有一個時間赫克搞清楚如何用於在節點字符串數組每個串分配存儲器串的陣列的malloc參數,如下所示:無法確定在節點
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語言中的指針,但現在我非常困惑。任何幫助將不勝感激。
您不需要爲char [10] [20]分配內存。這意味着你已經有足夠的內存分配給每個大小爲20的10個char數組。 – jayant
在任何情況下'malloc(sizeof(char))'都會分配一個字節的內存。 –
不要在C中投放'malloc'和朋友的結果! – Olaf