簡體   English   中英

我如何為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM