Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Наглядные пособия, как делать не надо.

11.04.2011, 07:38. Показов 2010. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не допускается рекурсия типа данных, например:
C++
1
2
3
4
5
6
struct TTree
{
 double Data;
 TTree Left;
 TTree Right;
};
, так как в этом случае потомки окажутся у всех узлов, из-за чего коряга должна быть бесконечной, но память любого компа ограничена. В связи с этим подобное вложение типа в себя запрещено правилами языка, так как его всё равно нельзя будет скомпилить.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2011, 07:38
Ответы с готовыми решениями:

Наглядные пособия, как делать не надо
int *function (int s) { int *p; p=new int ; delete p; return p; } int *function (int s) { int r;

Указатели и ссылки. Надо ли обнулять? когда и как это делать?
насчет ссылок вроде все ясно. обнулять их нет смысла на сколько я понимаю. А вот насчет указателей не все так просто. В книгах часто,...

Не могу понять как делать данные задачи.Очень надо(
1. Написать программу-функцию, используя условный оператор if: Даны x,y,z. Найти max(x+y+z, x*y*x)+3. 2. Написать программу-функцию...

14
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
11.04.2011, 09:25
Вывод? Делать через указатели?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.04.2011, 09:59  [ТС]
Бесконечная рекурсия:
C++
1
2
3
4
long int factorial (int n)
{
 return factorial(n-1)*n;
}
. Если нет ветвления, то рекурсия гарантировано переполнит стек.
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
11.04.2011, 14:23
Лучший ответ Сообщение было отмечено как решение

Решение

здесь что? ЖЖ Капитана Очевидность?
6
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.04.2011, 09:47  [ТС]
slice, если для тебя такие ляпы очевидны, то флаг тебе в руки.
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
12.04.2011, 09:55
taras atavin, а что, для кого-то не очевидны?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.04.2011, 09:58  [ТС]
Возврат ссылки на временный объект:
C++
1
2
3
4
5
6
int &f ()
{
 int t;
 ...
 return t;
}
. Перед действительным завершением функции и выходом из неё переменная t уничтожается, но функция возвращает её адрес.
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
12.04.2011, 12:49
ага, ссылка на временный объект, который лежит в стеке, и может использоваться не дальше след вызова длинной функции.

Добавлено через 2 минуты
при выходе переменная не уничтожается, очищается стек(в котором переменная), путём изменения значения esp

Добавлено через 1 минуту
тьфу блин не так тему понял

Добавлено через 33 секунды
лучше бы ты делал примеры "как надо делать"
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
12.04.2011, 12:50
Цитата Сообщение от taras atavin Посмотреть сообщение
Перед действительным завершением функции и выходом из неё переменная t уничтожается
ну что за глупость. где лежал твой int там и будет лежать. А вот при последующих операциях со стеком переменная, конечно, может затереться другими значениями.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.04.2011, 12:50  [ТС]
Цитата Сообщение от nxnx Посмотреть сообщение
при выходе переменная не уничтожается, очищается стек(в котором переменная), путём изменения значения esp
.Эйси, очистил ты стек, в нём валялась переменная. Где теперь эта переменная? Даже если по тому адресу по-прежнему валяется правильное значение, оно уже мусорное, а перемнной нет, а первый же вызов другой функции испортит даже этот хвост от функции.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.04.2011, 12:52  [ТС]
Цитата Сообщение от slice Посмотреть сообщение
ну что за глупость. где лежал твой int там и будет лежать.
Лежать там будет некий мусор, значение которого хоть и совпадает с интом, но инта уже нет, а совпадение в стандарте не прописано, а является лишь побочным следствеим оптимизации: границу стека двинули, а то, что в нём валяется не стёрли.
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
12.04.2011, 12:56
Цитата Сообщение от taras atavin Посмотреть сообщение
.Эйси, очистил ты стек, в нём валялась переменная. Где теперь эта переменная? Даже если по тому адресу по-прежнему валяется правильное значение, оно уже мусорное, а перемнной нет, а первый же вызов другой функции испортит даже этот хвост от функции.
вобщемто я тоже самое и написал, только другими словами.
Лучше делай пояснения почему так нельзя. а то поиск проиндексирует твой пост по фразе
"ссылка на временный объект" и все будут делать так как в твоём примере.

Добавлено через 1 минуту
на самом деле отсутствие очистки стека(самих значений) это правильно, в плане быстродействия.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.04.2011, 12:59  [ТС]
Кстати, если сделать ещё смешнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A
{
 A()
 {
  ...
 }
 ~A()
  {
  ...
 }
 ...
};
A &f()
{
 A a;
 return a;
}
, то над a должен ещё и деструткор поработать, а он мог поменять поля объекта.
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
12.04.2011, 20:30
taras atavin, ага, а если так сделать

C++
1
2
3
4
 ~A()
 {
    delete this;
 }
то ой что будет!
2
13.04.2011, 06:42  [ТС]

Не по теме:

Цитата Сообщение от slice Посмотреть сообщение
taras atavin, ага, а если так сделать

C++
1
2
3
4
 ~A()
 {
    delete this;
 }
то ой что будет!
Класная фигня! И точно по теме.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2011, 06:42
Помогаю со студенческими работами здесь

Где надо разместить CGi скрипт и как это делать?
где надо разместить CGi скрипт и как это делать?

надо в режиме sql сделать отчет с запросами на дату. а я не знаю как это делать.(
мне надо в режиме sql сделать отчет с запросами на дату. В отчет у меня идут три запроса. физ лица, юр лица и внешний рынок. Вот я не знаю...

Загрузка файла в компонент Outline: Как определить что цикл больше делать не надо
Подскажите еще такой момент (гугл не может ничего найти). Есть на форме компонента Outline1, загружаю туда файл: TMemoryStream*...

Что мне делать или что надо знать перед тем как начать изучение яз.программирования С/С++?
Я пока вообще не умею программировать.Сначала хотел с бейсика или паскаля.Но многие советуют начинать сразу с С/С++.

Подскажите что делать. Знаю что надо перегрузить оператор но никак не могу понять как это сделать
#include "stdafx.h" #include <iostream> #include <conio.h> #include <Windows.h> #include <string> using namespace...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru