0
我在ansi-C中遇到了問題。我試圖在數組中使用C進行堆棧。但是我遇到了彈出和彈出功能的問題 - 我不知道如何改變數組的大小。我想我可以使用函數realloc(),但我不知道如何。使用realloc改變c中數組的大小
任何人都可以幫忙嗎?
我在ansi-C中遇到了問題。我試圖在數組中使用C進行堆棧。但是我遇到了彈出和彈出功能的問題 - 我不知道如何改變數組的大小。我想我可以使用函數realloc(),但我不知道如何。使用realloc改變c中數組的大小
任何人都可以幫忙嗎?
下面是一個例子的代碼:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int *array = NULL;
array = malloc(5*sizeof(*array));
if (array == NULL)
{
printf("Memory allocation error\n");
exit(1);
}
/* Now array has 5 entries, from 0 to 4 */
array[0] = array[1] = array[2] = array[3] = array[4] = 0;
array = realloc(array, 10*sizeof(*array));
if (array == NULL)
{
printf("Memory allocation error\n");
exit(1);
}
/* Now array has 10 entries, from 0 to 9 */
array[5] = array[6] = array[7] = array[8] = array[9] = 0;
free(array);
array = NULL;
}
請注意,可以不改變從堆棧或從數據(或BSS)段分配的數組的大小。您需要使用malloc()動態分配數組,以便稍後使用realloc()。
考慮在將來的實現中,每次將新數據壓入堆棧時調用realloc()的效率太低。常規做法是將陣列容量擴大至少乘以2,並保持容量(陣列可容納的最大元件數量)以及其當前尺寸。通常,庫不會縮小數組,但如果需要更多空間,則擴展它。
如果這是C,爲什麼你在標題中標記了問題C#並使用了C#?他們是完全不同的語言。 – 2015-03-19 09:16:33
你可以看看下面的鏈接: http://stackoverflow.com/questions/3827892/how-can-i-change-the-size-of-an-array-in-c – 2015-03-19 09:17:02