|
Модераторы: bsa |
|
ПанкПрогаммист |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 25.9.2009 Репутация: нет Всего: нет |
Нефига не понял)) сушствует книга с++ для чаиников??
|
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
ПанкПрогаммист, попробуй тут посмотреть: Часто задаваемые вопросы
|
|||
|
||||
Axsandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 23.3.2010 Репутация: нет Всего: нет |
язык программирования С++ Бьерн Страуструп В принципе очень доступно все написано.... _____________________ Для тех, кто интересуется forex есть выгодные условия торговли. Это сообщение отредактировал(а) Axsandr - 29.3.2010, 13:28 |
|||
|
||||
EgoBrain |
|
|||
Опытный Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
А что происходит при использовании ссылки на сложные типы данных, например структуры? Компилятор меняют ссылку на указатель, и вместо оператора "." вставляет оператор "->"? |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
ничего он не меняет. maxim1000 имел в виду семантику, связанную с реализацией, но не саму реализацию.
впрочем, если считать, что в ассемблерном виде может (и скорее всего будет) использоваться косвенная адресация, то можно и так сказать |
|||
|
||||
kolesnle |
|
|||
Упертый сишник Профиль Группа: Участник Сообщений: 93 Регистрация: 22.3.2013 Репутация: нет Всего: нет |
||||
|
||||
rvpxbnkx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.7.2013 Репутация: нет Всего: нет |
Поясните пожалуйста. Программа на си. Я так понимаю массив это указатель на первый элемент + число элементов. В примере char *dic[][40] получается трехмерный массив. Потом он приобразуется с p = (char **)dic; Вот я и не понимаю почему трехмерный массив станет 2-х мерным. И еще Не совсем понятно чем такая конструкция char (*p)[10]; отличается от char *s[]
|
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
char *dic[][40] массив массивов по 40 указателей на char. char ** - это указатель на указатель на char. Т.е. когда идет это преобразование ты отказываешься от одного измерения.
Обычно, подобные вещи делают так: const char *dic[] = { ... }; А вообще, почитай про указатели и ссылки еще тут. |
|||
|
||||
eses |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 8.10.2012 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
gendalf7771 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 19.7.2012 Где: Архангельск Репутация: нет Всего: нет |
Привет всем.
Есть незамысловатый код:
Как бы так покомпактнее сделать, чтобы в этих if'ах не копипастить освобождение памяти для всех указателей? Я пытался с запретным goto прыгать в конец программы сразу к освобождению, да не заладилось чегой-то... И если в этих условиях вообще о таком не заикаться, то будет ли утечка памяти? |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
в main() уже ничего не надо освобождать, ОС освободит.
ну а вообще - сделайте локальный объект, освобождайте в деструкторе. при возврате из функции деструктор вызовется автоматически. |
|||
|
||||
gendalf7771 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 19.7.2012 Где: Архангельск Репутация: нет Всего: нет |
baldina, то есть если, скажем, у меня в программе большущие динамические массивы char наклёпаны, то в рамках main() можно в принципе забить на delete?
И вопрос вдогонку. Код:
Вот бывает иногда параметров у функции итак навалом, ну не хочу я szTemp передавать среди прочих, а на выходе функции массив получить надо. Есть ли адекватный способ получить желаемый массив с нормальный освобождением памяти? |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
gendalf7771, если ты можешь использовать возможности C++11, то рекомендую использовать std::unique_ptr:
|
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
delete в main() дань хорошему стилю, если не сделать, отладчик будет показывать утечки памяти.
но т.к. приложение завершается, и ОС освободит память, занятую приложением, с этой точки зрения этот delete ничего не дает.
возвращать объект. например, unique_ptr |
|||
|
||||
gendalf7771 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 19.7.2012 Где: Архангельск Репутация: нет Всего: нет |
Большое спасибо за ответы!
|
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |