Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
1

Создание динамического массива

08.07.2012, 14:37. Показов 3177. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята подскажите пожалуйста не давно начал изучать С++ ,решил добавить еще один язык для себя помимо Delphi, и вот вопрос как объявить динамический массив структуры я делаю вот ТАК:
C++
1
2
3
4
5
6
7
8
struct TSS1 //таблица стандартных символов
{
int typ;//тип символа
int num;    // номер в массиве терминалов TT
int p_str;  // позиция символа в строке
int p_sim;  // позиция символа
String name;//сам символ
};
C++
1
TSS1            *TSS; //объявляю сам динамический массив
этот вопрос всплыл из - за плохого знания синтаксиса языка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2012, 14:37
Ответы с готовыми решениями:

Создание динамического массива
Объявите указатель на массив типа double и предложите пользователю выбрать его размер. Далее...

Создание динамического массива
Добрый день! Хочу выделить память под массив, только после того как буду знать его длину. Длину...

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

Создание динамического массива
объясните пожалуйста вот эту часть // sozdanie dinamicheskogo massiva m*n...

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
08.07.2012, 14:40 2
C++
1
2
3
4
5
6
7
8
// создание
 
 int *Arr;
 Arr=new int [К-во_элементов];
 
// Удаление
 
 delete [] Arr;
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.07.2012, 14:44 3
C++
1
2
3
4
TSS1* pTSS1 = new TSS1;
pTSS1->typ = 1;
cout<<pTSS1->typ<<endl;
delete pTSS1;
1
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
08.07.2012, 14:54  [ТС] 4
Catstail,
В вашем примере обязательно надо указывать кол-во элементов?
Если да то какой же это динамический массив!!

Добавлено через 4 минуты
yuron_477,
Спасибо, Ваш пример я думаю подходит.
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.07.2012, 14:59 5
Нет, ну если нужен именно массив структур, то надо явно указать количество елементов
C++
1
2
3
4
TSS1* pTSS1 = new TSS1[10];
pTSS1[0].typ = 1;
cout<<pTSS1[0].typ<<endl;
delete [] pTSS1;
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
08.07.2012, 15:01 6
Это именно динамический массив C++. Количество элементов может быть значением переменной.

Массив - совокупность однородных данных, к которым можно обращаться по индексу. При этом массив наз. динамическим, если он создается во время выполнения и при создании можно задать размер.

Теперь посмотрим на этот код:

C++
1
2
3
4
TSS1* pTSS1 = new TSS1;
pTSS1->typ = 1;
cout<<pTSS1->typ<<endl;
delete pTSS1;
Здесь создается не массив, а элемент типа TSS1. А если я напишу pTSS1[1], это вызовет ошибку.
0
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
08.07.2012, 15:12  [ТС] 7
Да как раз и нужен массив структур вот как в делфи я пишу :
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//создаю тип записи
type
  TSEl = record // *
    typ: integer; // тип символа                                                                            //*
    num: integer; // номер в таблице терминалов :ТТ                                                //*
    p_str: integer; // номер строки в программе                                                      //*
    p_sim: integer; // номер символа в программе                                                    //*
    name: string; // сам символ                                                                                  //*
  end;
// далее создаю динамический массив типа этой записи
 TS: array of TSEl; // таблица стандартных символов(ТСС)
...........
//а далее при выполнения условия я его заполняю 
 SetLength(TS, ks + 1);
  TS[ks].typ := ltyp; // определяет какой это элемент(процедура,терминал,индентификатор,литерал)
  TS[ks].num := num; // номер в таблице
  TS[ks].p_str := str; // номер строки лексемы
  TS[ks].p_sim := pos; // номер позиция курсора
  TS[ks].name := s;    //символ
  inc(ks);
нужно подобное на с++ ,вот я и тормознулся на создании дин-го массива
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
08.07.2012, 15:19 8
Не вижу больших преимуществ у Дельфи... То же самое: описать тип и создать массив из объектов данного типа, указав размерность.
0
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
08.07.2012, 16:01  [ТС] 9
Catstail,
Я так понимаю размерность указывается в случае создания статистического массива.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
08.07.2012, 16:10 10
В случае статического массива, размерность может быть только константой (в стандартном C++), а для динамического массива - переменной. В этом - сила дин. массивов.
0
08.07.2012, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2012, 16:10
Помогаю со студенческими работами здесь

Создание динамического массива
Как создать динамически массив размера n если n вводиться с клавиатуры. А еще и двумерный cin&gt;&gt;n...

Создание динамического массива
Хотел написать программу, чтобы пользователь мог задать количество элементов в одномерном массиве,...

Создание динамического массива
Как ввести самому количество элементов массива,а не задавать константно ?

Создание динамического массива
Как объявить вот так вот : int blocks = { {0,0,0,0,0,0}, {0,0,0,0,0,0}, {0,0,0,0,0,0}}; Мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru