C语言中的动态大小数组

时间:2013-04-13 01:37:57

标签: c

所以如果我有一些动态的东西(IE迭代通过for循环)类似于这个......

for (i=0; i <= SCREENWIDTH; i++)
{
}

我想创建一个大小为SCREENWIDTH的数组,并为其添加条目。有没有办法可以做到这一点?

所以PSUEDO明智的是......

int[SCREENWIDTH] e = {1,2,....SCREENWIDTH}
for (i=0; i <= SCREENWIDTH; i++)
{
  e[i]= i;
}

2 个答案:

答案 0 :(得分:2)

你可以这样做:

#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") ;
   }
}

答案 1 :(得分:0)

在C中,您可以使用malloc创建动态数组。在你的案例中的例子:

int * e = (int*)malloc(SCREENWIDTH*sizeof(int));

以这种方式动态分配内存。接下来你可以做的是使用循环初始化数组。

您访问循环的方式有误。在C中索引从0开始到n-1。

示例:在您的情况下,您只能从e [0]到e [SCREENWIDTH-1]进行访问。

所以,请通过制作i&lt;来纠正你的循环。屏幕宽度。所以,它将是

int *e =  (int*)malloc(SCREENWIDTH*sizeof(int));
for (i=0; i < SCREENWIDTH; i++)
{
  e[i]= i;
}