3 / 3 / 1
Регистрация: 16.04.2009
Сообщений: 127
1

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

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

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток,

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

т.е.

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

Переместить элемент, имеющий индекс К на место, что имеет индекс М, сдвинув другие элементы
Здравствуйте. Задача. Дано линейный массив X. Переместить элемент, имеющий индекс К на место, что...

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

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

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс...

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


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

Добавлено через 1 минуту
Самодельный менеджер памяти на Си оказывается, как правило, простым. На Си++ - как правило сложным
1
Эксперт С++
2347 / 1720 / 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
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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
20.07.2010, 14:08 26
Цитата Сообщение от FireNovel Посмотреть сообщение
Неужели new и delete настолько лучше работают?
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы. Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
20.07.2010, 14:13 27
Цитата Сообщение от easybudda Посмотреть сообщение
Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
Потому что в концепции Си++ лежит использование классов, в том числе STL vector, list и т.д.
Использование собственных перераспределителей памяти приведет только к большему количеству ошибок.
Цитата Сообщение от easybudda Посмотреть сообщение
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы
Можно сделать так, чтобы и new/delete возвращали NULL, но только надо ли это.
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 22:35 28
Цитата Сообщение от FireNovel Посмотреть сообщение
если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() )
Да. Но не стоит использовать функции Си в С++.
Цитата Сообщение от FireNovel Посмотреть сообщение
если нужна память под свои классы, то лучше new.
Не лучше, а только new.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
22.07.2010, 20:23 29
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Дело не в лучше или хуже. new на самом деле чаще всего использует malloc для выделения памяти. Но есть очень существенная разница:
1. new вызывает конструкторы при выделении памяти, delete - деструкторы.
2. new кидает исключение при нехватке памяти.
3. new и delete перегружаемы, в том числе только для нужного класса.
Добавил в https://www.cyberforum.ru/faq/thread130500.html (раздел 5.6)
Надеюсь, ты не против
0
22.07.2010, 20:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2010, 20:23
Помогаю со студенческими работами здесь

Переменная и индекс
На Es пишет - здесь необходимо указать имя. Что не устраивает программу?

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

Недопустимый индекс; неопределенная переменная
Тема: Аппроксимация экспериментальных данных методом наименьших квадратов Необходимо:...

Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная
Привет всем. У меня есть проблема и варианты решения, но они не работают. Проблема вот такая:...


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

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

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