Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2012, 15:43   #31
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
int x[100];
int a = sizeof(Create(x)); // == 100 * sizeof(int);
Ну, наверное это можно интепретировать так)
Цитата:
С++ может целиком возвратить весь массив
EUGY вне форума Ответить с цитированием
Старый 01.04.2012, 15:49   #32
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Код:
int x[100];
int a = sizeof(Create(x)); // == 100 * sizeof(int);
Ну, наверное это можно интепретировать так)
http://easy-coding.blogspot.com/2011...g-post_24.html

Изначально задача была - создание контейнера средствами с++, имитирующего динамический массив, но без привлечения кучи.
Однако, эта задача так и не была реализована. При любых раскладах, реализация такой задачи показалась мне слишком уж не практичной, по сравнению с использованием обычной динамической памяти.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 15:55   #33
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Можешь скомпилировать. Этот код работает. Он возвращает ссылку на массив.

У "доктора", кажется трудности с пониманием простых вещей.
сделайте скачек по стеку, и ваш массив уже будет поврежден.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.04.2012, 15:55   #34
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers
он возвращает ссылку на УНИЧТОЖЕННЫЙ массив! от это ссылки больше нет НИКАКОГО толка
Ну и что? Это не делает код нерабочим. Он прекрасно компилируется и работает. Именно так, как и должен работать, согласно правилам языка.

Я повторюсь в последний раз:
1. В данной теме задача этого куска кода - продемонстрировать синтаксис языка с++, как следует объявлять функцию, которая возвращает ссылку на массив.

Никакого иного смысла этот код не несет.

2. В теме, где иллюстрируется нерабочая поделка, откуда я скопипастил этот кусок кода, преследовались особые цели, которые так и не были достигнуты. Я использовал различные подходы. И возможно, мне может быть и удалось бы получить некое ужассное и жутко не практичное нечто. А может быть и не удалось. В данном случае это не так важно.

Важно, что вернуть ссылку на массив вполне себе возможно. Для чего это реально может понадобится - зависит от конкретной ситуации.
И только лишь имея знание об этой ситуации, и можно судить о корректности, или не корректности кода.

Данный код не корректный. Но он работает.

Последний раз редактировалось _Bers; 01.04.2012 в 15:59.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 16:13   #35
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_Bers
Цитата:
Данный код не корректный. Но он работает.
в мемориз.
компилирующийся код еще не означает, что он работает. а этот код именно компилирующийся, не более
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 01.04.2012, 16:40   #36
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers

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

Я тебе подскажу: он будет работать. Не корректно, естественно. Но работать будет. И возвращать наверх ссылку на массив тоже будет.

Этого вполне достаточно для иллюстрации того, "как вернуть наверх ссылку на массив", а большего и не требовалось.

Если тебя парит, то это - твои личные трудности.
_Bers вне форума Ответить с цитированием
Старый 01.04.2012, 17:15   #37
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_Bers
окей. если ты признаешь, что код не корректный, зачем ты кидал ссылку
http://www.programmersforum.ru/showp...94&postcount=9 ?

что означал твой комментарий
Цитата:
Ты не можешь делать таких предположений, только потому, что в иллюстрации отсутствует вызывающая сторона.
ну приведи пример с вызывающей стороной так, чтобы твой код был валидным, а не просто компилирующимся.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 01.04.2012, 18:16   #38
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2_Bers
окей. если ты признаешь, что код не корректный, зачем ты кидал ссылку
http://www.programmersforum.ru/showp...94&postcount=9 ?
Что бы показать первоисток этого кода, и конкретно, что именно я пытался наворотить. Точнее даже так: что я пытался добиться этим кодом, когда изначально писал его. Что бы ты увидел попытку сохранить жизнь локальному объекту, за счет константной ссылки.

Что бы ты понял течение моей мысли.


Однако идея провалилась. И смысл провала не в том, что не удаётся сохранить жизнь локального объекта (например, я думал о том, что бы задействовать статические массивы внутри шаблонного метода).

Идея провалилась из-за того, что поделка при любых раскладах начала видеться мне непрактичной. Излишне переусложненной.

Она не даёт никакого профита по сравнению с "динамическим массивом".
К тому же, я так и не нашел красивого решения, как отвязаться от свойства "сингелтон" для такого массива. Поэтому, я не стал продолжать этот эксперимент.

Цитата:
Сообщение от pproger Посмотреть сообщение
ну приведи пример с вызывающей стороной так, чтобы твой код был валидным, а не просто компилирующимся.
Я не вижу ни одного способа, как сделать данный код "валидным".
Контейнер не доделан. И в том состоянии, в котором он находится сейчас, он является миной замедленного действия.

Если бы я нашёл хотя бы какой то способ, как сохранить жизнь локального массива, хотя бы на какое то время, что бы вызывающая сторона успела скопировать данные - возможно, я сумел бы закончить эту разработку "динамического массива", который не дергает кучу.

/зы: почему то эта поделка не даёт мне покоя. Иногда, я думаю о том, что решение существует.
_Bers вне форума Ответить с цитированием
Старый 03.04.2012, 18:37   #39
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

Да я в общем-то понял, как можно работать с массивом, адрес которого был передан в функцию, приведенный пример, который здесь так обсуждался вполне понятен. Весь вопрос состоял в том, как работать правильно с массивом в этом случае.
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Старый 05.04.2012, 21:19   #40
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Нужно передавать указатель по ссылке. Тогда можно будет передавать сам указатель, и в функции не нужны будут разыменования.
rmv240899 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявить массив через функцию. (С++) Alendorff Помощь студентам 11 20.02.2012 18:22
Передача указателей на массив в функцию. nibir Общие вопросы C/C++ 14 06.07.2011 13:24
Как передать Динамический массив в функцию? RainCat Помощь студентам 4 13.04.2011 11:25
Массив используя функцию и процедуру. Profan4ik Помощь студентам 1 30.05.2010 14:06
Передача указателя на массив в функцию loser Общие вопросы C/C++ 2 19.02.2010 19:41