所以,如果我有東西,是動態與此類似(即,通過一個for循環迭代)...動態大小數組
for (i=0; i <= SCREENWIDTH; i++)
{
}
,我想創建一個大小屏幕寬度的數組,並添加條目到它。有什麼辦法可以做到這一點?
所以僞明智那就......
int[SCREENWIDTH] e = {1,2,....SCREENWIDTH}
for (i=0; i <= SCREENWIDTH; i++)
{
e[i]= i;
}
所以,如果我有東西,是動態與此類似(即,通過一個for循環迭代)...動態大小數組
for (i=0; i <= SCREENWIDTH; i++)
{
}
,我想創建一個大小屏幕寬度的數組,並添加條目到它。有什麼辦法可以做到這一點?
所以僞明智那就......
int[SCREENWIDTH] e = {1,2,....SCREENWIDTH}
for (i=0; i <= SCREENWIDTH; i++)
{
e[i]= i;
}
你可以做到這一點,像這樣:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int SCREENWIDTH = 80 ;
int *arr = (int *)malloc(sizeof(int) * SCREENWIDTH) ;
if(NULL != arr)
{
for(int i = 0; i < SCREENWIDTH; ++i)
{
arr[i] = i ;
}
for(int i = 0; i < SCREENWIDTH; ++i)
{
printf("%d, ", arr[i]) ;
}
printf("\n") ;
}
}
在C您可以使用malloc創建動態數組。示例在您的情況下:
int * e = (int*)malloc(SCREENWIDTH*sizeof(int));
一旦您以這種方式動態分配內存。接下來的想法是使用循環初始化數組。
您訪問循環的方式存在錯誤。在C中索引從0開始到n-1。
示例:在您的情況下,只能從e [0]訪問e [SCREENWIDTH-1]。
所以,請糾正您的循環,使其成爲我< SCREENWIDTH。所以,這將是
int *e = (int*)malloc(SCREENWIDTH*sizeof(int));
for (i=0; i < SCREENWIDTH; i++)
{
e[i]= i;
}
我正在移植代碼,我沒有這樣做,我不願意改變它,直到我確信這是合法的。除了最壞的情況,我會超過/低於1 px。但這是個好建議。 – Jackie
不太明白你的問題,你想創建一個大小爲「SCREENWIDTH」的動態數組?或創建大小爲「SCREENWIDTH」的動態數組也是動態的? – taocp
動態數組使用malloc,int * e =(int *)malloc(sizeof(int)* SCREENWIDTH);但是,你也知道SCREENWIDTH值,我認爲你不需要這樣做。 –