所以,如果我有东西,是动态与此类似(即,通过一个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值,我认为你不需要这样做。 –