Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/65: Рейтинг темы: голосов - 65, средняя оценка - 4.97
3 / 3 / 1
Регистрация: 16.04.2009
Сообщений: 127

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

16.07.2010, 13:04. Показов 12714. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2010, 13:04
Ответы с готовыми решениями:

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

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

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

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


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

Добавлено через 1 минуту
Самодельный менеджер памяти на Си оказывается, как правило, простым. На Си++ - как правило сложным
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 13:46
Цитата Сообщение от 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
На сколько я понимаю? если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() ). а если нужна память под свои классы, то лучше new.
C++
1
2
3
char *p1, *p2;
p1 = malloc(3 * sizeof (char));
p2 = new char[3];
результат кода будет одинаков? Или есть еще нюансы
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.07.2010, 14:08
Цитата Сообщение от FireNovel Посмотреть сообщение
Неужели new и delete настолько лучше работают?
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы. Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
1
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
20.07.2010, 14:13
Цитата Сообщение от easybudda Посмотреть сообщение
Кстати отсутствие аналога realloc() в С++ мне и самому не понятно...
Потому что в концепции Си++ лежит использование классов, в том числе STL vector, list и т.д.
Использование собственных перераспределителей памяти приведет только к большему количеству ошибок.
Цитата Сообщение от easybudda Посмотреть сообщение
По-моему самая большая разница в том, что malloc() / calloc() / realloc() в случае, если память выделить не удалось, возвращают NULL и эту ситуацию программист должен сам отслеживать, а new / new [] в случае ошибки сами вызывают исключение (exception), которое прерывает выполнение программы
Можно сделать так, чтобы и new/delete возвращали NULL, но только надо ли это.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
20.07.2010, 22:35
Цитата Сообщение от FireNovel Посмотреть сообщение
если динамически выделять память, к примеру, для элементов всроеных типов, то разницы нет(new или malloc() )
Да. Но не стоит использовать функции Си в С++.
Цитата Сообщение от FireNovel Посмотреть сообщение
если нужна память под свои классы, то лучше new.
Не лучше, а только new.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
22.07.2010, 20:23
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Дело не в лучше или хуже. new на самом деле чаще всего использует malloc для выделения памяти. Но есть очень существенная разница:
1. new вызывает конструкторы при выделении памяти, delete - деструкторы.
2. new кидает исключение при нехватке памяти.
3. new и delete перегружаемы, в том числе только для нужного класса.
Добавил в https://www.cyberforum.ru/faq/thread130500.html (раздел 5.6)
Надеюсь, ты не против
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2010, 20:23
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru