Перейти к содержанию

Как в чистом С создать динамический массив


Рекомендуемые сообщения

Помогите пожалуйста разобраться, а то я чего то совсем запутался.

Суть проблемы: я ввожу число, и в соответствии с ним в программе организуются массивы, с которыми в дальнейшем ведется работа.

Пробовал так:

#include <stdio.h>

#include <termio.h>

int twqn, qu, q, *up, *down, *rows, *x;

struct termio new, delete;

int main(void)

{

printf("Введите q:\n");

scanf("%d", &q);

twqn = q * 2 -1;

up = new int[twqn];

down = new int[twqn];

rows = new int[q];

x = new int[q];

.................

delete[] up;

delete[] down;

delete[] rows;

delete[] x;

return 0;

}

и вот так:

int main(void)

{

printf("Введите q:\n");

scanf("%d", &q);

twqn = q * 2 -1;

qu = q - 1;

up = (int *)malloc(twqn *sizeof(int));

down = (int *)malloc(twqn *sizeof(int));

rows = (int *)malloc(queen *sizeof(int));

x = (int *)malloc(queen *sizeof(int));

...................................

free(up);

free(down);

free(rows);

free(x);

return 0;

}

Ссылка на комментарий
Поделиться на другие сайты

задача решается с помощью структур с указателями и строится связный список. поищите в сети что-то типа "динамические структуры дыннх на С"

Ссылка на комментарий
Поделиться на другие сайты

san6 писал(а) Втр, 11 Апреля 2006 10:41

Помогите пожалуйста разобраться, а то я чего то совсем запутался.

Суть проблемы: я ввожу число, и в соответствии с ним в программе организуются массивы, с которыми в дальнейшем ведется работа.

Пробовал так:

.....

То, что Вы написали - это задача, а не проблема. Проблема - это то, что у Вас не получается либо то, чего Вы не понимаете.

Так в чем состоит собственно проблема?

Ссылка на комментарий
Поделиться на другие сайты

выдает

free(): invalid pointer 0x804a008!

free(): invalid pointer 0x804a088!

в Винде я создавал вот так, и все работало

{

int *a;

int *b;

a=new int[40];

b=new int[40];

int j=1;

int g=10;

for(int k=0;k<40;k++)

{

a[k]=j;

j++;

}

соответственно потом delete.

А в linux просто не могу отыскать синтаксис, как правильно делать

Ссылка на комментарий
Поделиться на другие сайты

es@tbw ~ $ cat > 1.c <<EOF
> main()
> {
> int *x = 0;
> x = malloc (1024);
> printf ("%X\n", x);
> free (x);
> return 0;
> }
> EOF
es@tbw ~ $ gcc 1.c
1.c: In function `main':
1.c:4: warning: assignment makes pointer from integer without a cast
es@tbw ~ $ ./a.out 
804A008
es@tbw ~ $ 

Работает, выделяется, освобождается...
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...