2013-04-13 2 views
0

Так что если у меня есть то, что было Dynamic (IE итерацию через цикл), подобный этому ...Динамически Размер массива в C

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

И я хотел бы создать массив размера SCREENWIDTH и добавления записей к нему. Есть ли способ, которым я могу это сделать?

так псевдопользователей мудрая было бы ...

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

не совсем понял ваш вопрос, вы хотели бы создать динамический массив с размером «SCREENWIDTH»? или создать динамический массив, размер которого «SCREENWIDTH» также является динамическим? – taocp

+0

Для динамических массивов используйте malloc, int * e = (int *) malloc (sizeof (int) * SCREENWIDTH); Но вы также знаете значение SCREENWIDTH, я думаю, что это не обязательно делать в вашем случае. –

ответ

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

В C вы можете создать динамический массив с помощью таНос. Пример в вашем случае:

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

Как только вы распределяете память динамически таким образом. Следующее, что вы можете сделать, это инициализация массива с помощью цикла.

Ошибка при обращении к циклу. В C Индексирование начинается с 0 до n-1.

Пример: В вашем случае вы можете получить доступ только от e [0] до e [SCREENWIDTH-1].

Итак, пожалуйста, исправьте свою петлю, сделав ее i < SCREENWIDTH. Итак, это будет

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

Я портирую код, я этого не делал, и я не чувствую себя комфортно меняя его, пока не уверен, что это законно. Кроме худшего сценария, я буду больше/меньше 1 px. Но это хороший совет. – Jackie

Смежные вопросы