![](/img/trans.png)
[英]How can I dynamically allocate memory for an array of int (not int*) in C?
[英]How can i dynamically allocate memory for a array of pointers in C?
我需要為指針數組動態分配內存。
讓我們假設
char *names[50];
char *element;
我使用以下代碼動態分配內存,這會產生錯誤。
names=malloc(sizeof(char *));
之后,我需要為該指針分配另一個字符指針,例如
names=element;
我收到以下錯誤消息: ": warning: assignment from incompatible pointer type"
。
我該如何解決?
名稱= malloc(sizeof(char *));
將分配4或8個字節(取決於您的系統)。 這沒有意義,因為您的數組在聲明中的大小已經達到了50個條目...
名稱=元件;
這不是在C中使用數組的方式。您已經聲明“名稱”中有50個元素,並且每個元素都被分配為指向字符數組的不同指針。 您需要確定要分配數組中的哪個元素。 對於eaxample:
char *test1 = "test string 1";
char *test2 = "test string 2";
names[0] = test1; // Assign pointer to string 1 to first element of array
names[1] = test2; // Assign pointer to string 2 to second element of array
如果要動態分配N
char *
指針數組,則可以使用:
char **names;
names = malloc(N * sizeof p[0]);
要將char *
value element
分配給數組中的第一個元素,請使用:
names[0] = element;
您可能需要查看本教程: http : //dystopiancode.blogspot.com/2011/10/dynamic-multiDimension-arrays-in-c.html它說明了如何為數組,矩陣,多維數據集和超立方體分配動態內存,以及還有如何釋放它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.