Форум программистов, компьютерный форум CyberForum.ru

Переменная + индекс - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
PMike
3 / 3 / 0
Регистрация: 16.04.2009
Сообщений: 127
16.07.2010, 13:04     Переменная + индекс #1
Всем доброго времени суток,

знает кто-нибудь, как получить название переменной, получаемое путем конкатенации строки и индекса i?

т.е.

C++
1
2
3
4
5
6
char str[4] = "var";
 
( i = 0; i<10; i++)
{
  int ...//здесь нужно получить переменную с именем vari (var1 var2 var3 etc)
}
Буду очень рад, если кто-нибудь откликнется :-)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 13:04     Переменная + индекс
Посмотрите здесь:

C++ индекс массива
C++ переменная
массив и индекс C++
Индекс C++
C++ Переменная
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,135
Записей в блоге: 26
20.07.2010, 13:22     Переменная + индекс #21
FireNovel, malloc - это библиотечная функция, а не конструкция языка. В Си нет встроенных средств для работы с динамической памятью, а в Си++ - есть (но какие-то ущербные)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
20.07.2010, 13:39     Переменная + индекс #22
Цитата Сообщение от Evg Посмотреть сообщение
malloc - это библиотечная функция, а не конструкция языка
Эт я понимаю
Цитата Сообщение от Evg Посмотреть сообщение
В Си нет встроенных средств для работы с динамической памятью,а в Си++ - есть (но какие-то ущербные)
Evg, Вот, как раз про это(в чем заключается ущербность) я и хотел узнать, у людей хорошо разбирающихся и работающих с ними. Типа в чем их преимущества и недостатки. А то в той литературе с которой я сталкивался тупо писалось: "Забейте на malloc() и используйте new"


Может отдельную темку создать??
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,135
Записей в блоге: 26
20.07.2010, 13:45     Переменная + индекс #23
Цитата Сообщение от FireNovel Посмотреть сообщение
Evg, Вот, как раз про это(в чем заключается ущербность) я и хотел узнать, у людей хорошо разбирающихся и работающих с ними. Типа в чем их преимущества и недостатки. А то в той литературе с которой я сталкивался тупо писалось: "Забейте на malloc() и используйте new"
new - это аналог malloc'а, delete - аналог free, а вот аналога realloc нету. Принципиальные преимущества new перед malloc - это вызов конструкторов. Ещё нет аналога calloc, но в теории это рулится конструкторами (хотя по скорости как правило оказывается неэффективно)

Добавлено через 1 минуту
Самодельный менеджер памяти на Си оказывается, как правило, простым. На Си++ - как правило сложным
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 13:46     Переменная + индекс #24
Цитата Сообщение от FireNovel Посмотреть сообщение
CyBOSSeR, А почему такое не желание использовать malloc и т.п. ведь их не зря оставили в С++.
Не оставить их просто не могли, как правильно сказал Evg это просто функции.
Цитата Сообщение от FireNovel Посмотреть сообщение
Неужели new и delete настолько лучше работают??
Дело не в лучше или хуже. new на самом деле чаще всего использует malloc для выделения памяти. Но есть очень существенная разница:
1. new вызывает конструкторы при выделении памяти, delete - деструкторы.
2. new кидает исключение при нехватке памяти.
3. new и delete перегружаемы, в том числе только для нужного класса.
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
20.07.2010, 14:05     Переменная + индекс #25
На сколько я понимаю? если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() ). а если нужна память под свои классы, то лучше new.
C++
1
2
3
char *p1, *p2;
p1 = malloc(3 * sizeof (char));
p2 = new char[3];
результат кода будет одинаков? Или есть еще нюансы
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.07.2010, 14:08     Переменная + индекс #26
Цитата Сообщение от FireNovel Посмотреть сообщение
Неужели new и delete настолько лучше работают?
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы. Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.07.2010, 14:13     Переменная + индекс #27
Цитата Сообщение от easybudda Посмотреть сообщение
Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
Потому что в концепции Си++ лежит использование классов, в том числе STL vector, list и т.д.
Использование собственных перераспределителей памяти приведет только к большему количеству ошибок.
Цитата Сообщение от easybudda Посмотреть сообщение
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы
Можно сделать так, чтобы и new/delete возвращали NULL, но только надо ли это.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 22:35     Переменная + индекс #28
Цитата Сообщение от FireNovel Посмотреть сообщение
если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() )
Да. Но не стоит использовать функции Си в С++.
Цитата Сообщение от FireNovel Посмотреть сообщение
если нужна память под свои классы, то лучше new.
Не лучше, а только new.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2010, 20:23     Переменная + индекс
Еще ссылки по теме:

C++ минимальный индекс
индекс масива C++
C++ Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,135
Записей в блоге: 26
22.07.2010, 20:23     Переменная + индекс #29
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Дело не в лучше или хуже. new на самом деле чаще всего использует malloc для выделения памяти. Но есть очень существенная разница:
1. new вызывает конструкторы при выделении памяти, delete - деструкторы.
2. new кидает исключение при нехватке памяти.
3. new и delete перегружаемы, в том числе только для нужного класса.
Добавил в http://www.cyberforum.ru/faq/thread130500.html (раздел 5.6)
Надеюсь, ты не против
Yandex
Объявления
22.07.2010, 20:23     Переменная + индекс
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru