我只是想問,是否有任何方法可以在運行時爲C中的現有元素數組動態分配內存?例如..如果我聲明int arr [25];那麼我可以在我的數組中使用最多25個整數。但是如果用戶想要輸入更多整數,但是我們事先不知道有多少?我也不想通過分配類似int arr [500]的東西來浪費內存;只是爲了確保用戶不超過我的數組的上限:(我真的很困惑和傷心,因爲我無法找到這個解決方案..是否C甚至支持這樣的事情?如果不是然後在哪個編程語言能更容易地解決這樣的問題?PS->我是編程新手,所以我很抱歉,如果這是一個菜鳥問題:/爲C中的數組動態分配內存C
回答
,如果它是你實際上可能要檢查的釋放calloc()函數的數組:
void* calloc (size_t num, size_t size);
它可以用於像這樣:
/* calloc example */
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* calloc, exit, free */
int main()
{
int i,n;
int * pData;
printf ("Amount of numbers to be entered: ");
scanf ("%d",&i);
pData = (int*) calloc (i,sizeof(int));
if (pData==NULL) exit (1);
for (n=0;n<i;n++)
{
printf ("Enter number #%d: ",n+1);
scanf ("%d",&pData[n]);
}
printf ("You have entered: ");
for (n=0;n<i;n++) printf ("%d ",pData[n]);
free (pData);
return 0;
}
如果需要調整陣列稍後再看看realloc函數。 (是的,它確實保持原始數據,如果succesfull)
不會投出malloc或calloc結果,包含正確的頭文件 – Ulterior 2014-09-03 17:23:06
取決於您的編譯器是C還是真正的C++編譯器。投下真正的C編譯器。 – AnthonyLambert 2014-09-03 17:28:29
你需要使用malloc做動態內存分配()/ realloc()的,並使用免費()一旦你完成其釋放。
int* a = malloc(25*sizeof(int));
//use a like array...a[0]...to a[24]
// realloacte if you need to grow it
a = realloc(a,50);
free(a);
上述邏輯應在C.如果編寫成C++中使用,則應該使用STL std::vector<T>
在c++
有一門課程,您可能會覺得有用,它被稱爲vector
。您可以添加到矢量的前面:myVector.push_front(myElement)
並添加到矢量的末尾:myVector.push_back(myElement)
。如果這種類型的功能對您非常重要,我會推薦使用c++
vector
。
或者,您可以使用c
中的malloc()
函數在運行時請求特定數量的內存:char *five_chars = malloc(sizeof(char) * 5)
。完成記憶後,請務必致電free(five_chars)
。
sizeof(char)是多餘的,因爲它始終是1. – Igor 2014-09-03 17:30:11
- 1. C&C++中數組的動態內存分配
- 2. 如何在Qt C++中爲數組動態分配內存?
- 3. C++動態分配二維數組過度分配內存?
- 4. 結構數組中的動態分配內存(在C中)
- 5. C++中的動態內存分配
- 6. 動態內存分配與C + +中的數組
- 7. 動態數組分配C++
- 8. 如何爲C++中的靜態n維數組分配內存
- 9. 動態內存分配在C++上的動態分配內存中
- 10. C中的數組的內存分配
- 11. C中的動態數組分配
- 12. 爲靜態數組的動態數組分配內存
- 13. C/C++動態或靜態內存分配?用C
- 14. 分配給動態數組時,內存是否在C++中分配?
- 15. 如何動態地爲C中的字符串數組分配內存?
- 16. 如何動態地爲C中的二維數組bmp文件分配內存?
- 17. 動態內存分配套接字C
- 18. 動態分配內存結構c
- 19. C++動態內存分配混亂
- 20. C++動態內存分配問題
- 21. C結構表動態內存分配
- 22. 動態內存分配在C?
- 23. 動態內存分配和使用C
- 24. 動態分配內存給結構數組C++
- 25. 內存堆問題C++,動態分配多維數組
- 26. 動態分配函數中的內存函數C
- 27. int數組的動態內存分配
- 28. 用於數組的C++內存分配
- 29. 指針數組的C++內存分配
- 30. 重新分配C++數組的內存。
你已經用C和C++標記了這個問題,但你的問題文本只提到C.C和C++的正確答案會有很大的不同。你問哪一個?請修改您的問題以刪除錯誤的標記。 – Angew 2014-09-03 17:17:35
[C動態增長數組]的可能重複(http://stackoverflow.com/questions/3536153/c-dynamically-growing-array) – Sneftel 2014-09-03 17:17:38
如果你是C的新手,我會強烈推薦Steve C * Primer Plus *煎餅。第5版約爲$ 30,幾乎到處都是(http://www.amazon.ca/C-Primer-Plus-5th-Edition/dp/0672326965),並具備快速啓動和運行所需的一切。我在幾年前的一個長週末閱讀了它的舊版本。奇妙的介紹C. C. – DevNull 2014-09-03 17:42:09