Динамический Массив

05.04.2009
14
0
#1
Подскажите как реализовать Динамический массив в С, сел за С первый раз, не могу разобраться(через Microsoft Visual Studio 2005) :)
 
C

Charley2

#2
Код:
int *a, n, i;
scanf("%d", &n);
a = malloc(n*sizeof(int));
// далее работаем как с массивом, например:
for (i=0; i <n; i++) {
a[i]=0;
} // for
.............................................
free(a); // когда станет не нужно
 
05.04.2009
14
0
#3
Код:
int *a, n, i;
scanf("%d", &n);
a = malloc(n*sizeof(int));
// далее работаем как с массивом, например:
for (i=0; i <n; i++) {
a[i]=0;
} // for
.............................................
free(a); // когда станет не нужно
пробовал - ругается на a = malloc(n*sizeof(int));, но у меня там не инт был? а структура, вроде есть что-то типа:

int *a,i;
a=new int[10];
for (i=0;i<10;i++)
a=0;

это сегодня нам на лекции объясняли, на которой меня не было; еще не пробовал... но если кто-то знает - может подтвердит или опровергнет это?
 
05.04.2009
14
0
#5
Потому что типы приводить нужно.

Лекция по C++, наверно, была? ;)
Смысле приводить типы?? У меня была структура содержащая 3 переменные типа инт и два массива символов - [25] и [20]
я и писал a=malloc(n*sizeof(struct hok));
hok - это название структуры;
или надо было считать сколько все это дело в байтах весит???

вообще предполагается С, но видимо скорее и то, и то))
 
D

dreamer

#6
я и писал a=malloc(n*sizeof(struct hok));
malloc возвращает указатель на void, а Вам нужен указатель на тот тип данных, массив элементов которого Вы создаёте (т.е. hok*, если я правильно понимаю).

вообще предполагается С, но видимо скорее и то, и то))
Насколько я знаю, с VS.NET компиляторов C не идёт вообще (поправьте, если не так), так что лучше уж через new.
 

a0z

Well-known member
15.03.2011
108
0
#7
Как-то так:
struct hok *a=(struct hok *)malloc(n*sizeof(struct hok));

Насколько я знаю, с VS.NET компиляторов C не идёт вообще (поправьте, если не так), так что лучше уж через new.
Есть. Если компилится файл с расширением .c, то будет использоваться С компилятор