Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
PMike
3 / 3 / 1
Регистрация: 16.04.2009
Сообщений: 127
#1

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

16.07.2010, 13:04. Просмотров 2597. Ответов 28
Метки нет (Все метки)

Всем доброго времени суток,

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

т.е.

C++
1
2
3
4
5
6
char str[4] = "var";
 
( i = 0; i<10; i++)
{
  int ...//здесь нужно получить переменную с именем vari (var1 var2 var3 etc)
}
Буду очень рад, если кто-нибудь откликнется :-)

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 13:04
Ответы с готовыми решениями:

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
Исходники: /* main.cpp */ #include &quot;hider.h&quot; int main(void) { return 0;...

Переменная или переменная и условие
Привет всем. Стало интересно. Есть предположим функция. В ней ссылкой...

Индекс
Немного ламерский вопрос, но все же как в данной проге вывести вместо значения...

Переменная
Мне нужная переменная(ые) в 1 байт. Где её можно взять?

переменная
#include &lt;iostream&gt; using namespace std; void func1(); void func2(); ...

28
Evg
Эксперт CАвтор FAQ
19121 / 6962 / 522
Регистрация: 30.03.2009
Сообщений: 19,603
Записей в блоге: 30
20.07.2010, 13:22 #21
FireNovel, malloc - это библиотечная функция, а не конструкция языка. В Си нет встроенных средств для работы с динамической памятью, а в Си++ - есть (но какие-то ущербные)
1
FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
20.07.2010, 13:39 #22
Цитата Сообщение от Evg Посмотреть сообщение
malloc - это библиотечная функция, а не конструкция языка
Эт я понимаю
Цитата Сообщение от Evg Посмотреть сообщение
В Си нет встроенных средств для работы с динамической памятью,а в Си++ - есть (но какие-то ущербные)
Evg, Вот, как раз про это(в чем заключается ущербность) я и хотел узнать, у людей хорошо разбирающихся и работающих с ними. Типа в чем их преимущества и недостатки. А то в той литературе с которой я сталкивался тупо писалось: "Забейте на malloc() и используйте new"


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

Добавлено через 1 минуту
Самодельный менеджер памяти на Си оказывается, как правило, простым. На Си++ - как правило сложным
1
CyBOSSeR
Эксперт С++
2309 / 1682 / 148
Регистрация: 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 перегружаемы, в том числе только для нужного класса.
1
FireNovel
150 / 73 / 27
Регистрация: 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];
результат кода будет одинаков? Или есть еще нюансы
0
easybudda
Модератор
Эксперт CЭксперт С++
10027 / 5950 / 1485
Регистрация: 25.07.2009
Сообщений: 11,248
20.07.2010, 14:08 #26
Цитата Сообщение от FireNovel Посмотреть сообщение
Неужели new и delete настолько лучше работают?
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы. Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
1
fasked
Эксперт С++
4978 / 2557 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.07.2010, 14:13 #27
Цитата Сообщение от easybudda Посмотреть сообщение
Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
Потому что в концепции Си++ лежит использование классов, в том числе STL vector, list и т.д.
Использование собственных перераспределителей памяти приведет только к большему количеству ошибок.
Цитата Сообщение от easybudda Посмотреть сообщение
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы
Можно сделать так, чтобы и new/delete возвращали NULL, но только надо ли это.
0
CyBOSSeR
Эксперт С++
2309 / 1682 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 22:35 #28
Цитата Сообщение от FireNovel Посмотреть сообщение
если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() )
Да. Но не стоит использовать функции Си в С++.
Цитата Сообщение от FireNovel Посмотреть сообщение
если нужна память под свои классы, то лучше new.
Не лучше, а только new.
0
Evg
Эксперт CАвтор FAQ
19121 / 6962 / 522
Регистрация: 30.03.2009
Сообщений: 19,603
Записей в блоге: 30
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)
Надеюсь, ты не против
0
22.07.2010, 20:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2010, 20:23

Индекс массива
Необходимо составить программу, которая бы меняла местами в строке первую и...

индекс масива
закидайте меня камнями, но почему индексация в масивах с 0, потомучто...

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru