Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
sterkh
5 / 5 / 1
Регистрация: 06.04.2013
Сообщений: 99
#1

Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? - C++

10.08.2014, 18:00. Просмотров 1219. Ответов 40
Метки нет (Все метки)

Если выделение памяти для дин.массива задать void-функцией, можно ли будет оперировать с ним в main или придётся отдельно выделять память в main?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2014, 18:00     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main?
Посмотрите здесь:

что плохого если я делаю ф-ю main типа void - C++
привет всем, кто может объяснить, что плохого если я делаю ф-ю main типа void ?

Как в отдельной функции выделить память для динамического массива, объявленного в main - C++
Доброго времени суток. Передо мной стоит задача выделения памяти для динамического массива в отдельной функции. То есть я объявляю в...

Вызов функции динамического выделение памяти - C++
Здравствуйте! Нужна помощь! Написал функцию выделение памяти под двумерный динамический массив, которая возвращает масив размером...

Неправильное выведение памяти для динамического массива - C++
Написал несложную программу. Когда в одном объекте вывожу динамический массив другого вложенного объекта, выдает ошибку в этих строках ...

Выделение памяти для массива - C++
верно ли выделил память для массива если нет поправьте, заранее спасибо) class type { private: int ***p; int x, y, z; public: ...

Выделение памяти для массива - C++
Пишу такой код: int main() { int* arr1 = new int; } Всё норм. Теперь такой:

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
11.08.2014, 12:29     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #31
Цитата Сообщение от GetHelp Посмотреть сообщение
в си поддерживает ленивые вычисления
В приличном обществе такое лучше не говорить, засмеют-с

Не по теме:

Случайно поставил 'спасибо', как-нибудь можно убрать?



Добавлено через 5 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
При не действительном ptr уже разыменование вызовет глюк и проверять таким макаром можно только через оптимизацию логического оператора: если ptr не действителен, то он приводится к false оператор заведомо вернёт false и в оптимизированной версии разыменование не произойдёт.
Кто-нибудь понял, что тут написано?
Tulosba
11.08.2014, 12:39
  #32

Не по теме:

Цитата Сообщение от Voivoid Посмотреть сообщение
Случайно поставил 'спасибо', как-нибудь можно убрать?
Какое-то время было можно. Но это было экспериментально. Сейчас наверное только через модератора.
Цитата Сообщение от Voivoid Посмотреть сообщение
Кто-нибудь понял, что тут написано?
Советую даже не задумываться об этом.

taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.08.2014, 12:47     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #33
Цитата Сообщение от Voivoid Посмотреть сообщение
Кто-нибудь понял, что тут написано?
Вот только не надо делать вид, что как только не набралась запятая, так сразу и не понятно.
gru74ik
Модератор
Эксперт CЭксперт С++
4106 / 1751 / 197
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
11.08.2014, 12:53     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #34
Цитата Сообщение от taras atavin Посмотреть сообщение
Это называется кратность, а не уровень.
А я думал, это называется уровень косвенности.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
11.08.2014, 12:54     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #35
Цитата Сообщение от Voivoid Посмотреть сообщение
Кто-нибудь понял, что тут написано?
Смею предложить такую интерпретацию:
Если prt недействительный (память не выделилась),
то разыменование (получение значения по адресу) вызовет глюк.
Т.е. проверять действительность ptr через разыменование нельзя.
Можно создать метод проверки действительности ptr
(если ptr не действителен, то он будет возвращать false).
В результате разыменование не понадобится.

Только мне не понятно, как этот метод должен выглядеть.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.08.2014, 13:27     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #36
Цитата Сообщение от zss Посмотреть сообщение
Можно создать метод проверки действительности ptr
(если ptr не действителен, то он будет возвращать false).
Зачем? Есть же приведение к bool. Тем более это указатель, а не объект.

Добавлено через 1 минуту
Цитата Сообщение от gru74ik Посмотреть сообщение
А я думал, это называется уровень косвенности.
Косвенной бывает адресация, а не указатель, таким образом уровень косвенности - связанное, но не синонимичное понятие.

Добавлено через 1 минуту
Кроме того, если по указателю кратности пять копировать не сами данные, а тройной указатель, то адресация будет двойной косвенности, а используемый указатель свою кратность сохраняет.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
11.08.2014, 13:29     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #37
Цитата Сообщение от taras atavin Посмотреть сообщение
Есть же приведение к bool
Приведение к bool дает false, если приводится нуль и true в остальных случаях.
А если в prt сидит не нуль, а мусор?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.08.2014, 13:32     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #38
C++
1
2
3
4
5
6
7
8
int *****a;
int ***b;
a=new int****[5];
a[0]=new int***[5];
a[0][0]=new int**[5];
a[0][0][0]=new int*[5];
a[0][0][0][0]=new int[5];
b=**a;//косвенность двойная, а указатель всё равно кратности 5
Добавлено через 59 секунд
Цитата Сообщение от zss Посмотреть сообщение
Приведение к bool дает false, если приводится нуль и true в остальных случаях.
А если в prt сидит не нуль, а мусор?
Инициируй NULL, null_ptr, а при освобождении их же присваивай и тому подобными значениями и будет тебе щасье.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
11.08.2014, 13:58     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #39
Цитата Сообщение от taras atavin Посмотреть сообщение
кратность
Нет, это именно уровень (level), только не косвенности, а указателя.
Из стандарта, например в 4.4/4:
A conversion can add cv-qualifiers at levels other than the first in multi-level pointers, subject to the following rules:56
Two pointer types T1 and T2 are similar if there exists a type T and integer n > 0 such that:
T1 is cv 1,0 pointer to cv 1,1 pointer to · · · cv 1,n−1 pointer to cv 1,n T
and
T2 is cv 2,0 pointer to cv 2,1 pointer to · · · cv 2,n−1 pointer to cv 2,n T
И этот термин там повсеместно.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.08.2014, 07:50     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #40
Цитата Сообщение от DrOffset Посмотреть сообщение
Нет, это именно уровень (level), только не косвенности, а указателя.
Из стандарта, например в 4.4/4:
А на клавиатуре 103 ключа. Эйси.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2014, 14:02     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main?
Еще ссылки по теме:

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

Динамическое выделение памяти для массива - C++
Не могу разобраться, почему программа вызывает точку остановы после выбора действия в функции, причем не показывает, где. Она происходит...

Выделение памяти для непрямоугольного массива - C++
Возник вопрос: У меня в любительской прожке. Для ускорения расчётов формируется два массива поскольку массивы непрямоугольные , для их...

Динамическое выделение памяти для массива - C++
Кто может помочь решить задачу. Для заданного двумерного массива из n строк и m столбцов вывести на экран следующее меню операций: ...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
17.08.2014, 14:02     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? #41
Цитата Сообщение от taras atavin Посмотреть сообщение
А на клавиатуре 103 ключа. Эйси.
Однако, в списке возможного перевода слова "level" нет слова "кратность", а в списке возможных переводов слова "key" есть слово "кнопка". Причем слово "кнопка" или "переключатель" там довольно давно, еще с докомпьютеных времен. А кратность - это "multiplicity" или "rate", но никак не "level".

Вопрос даже не в том, что твой термин вообще не подходит. Лично я не против него. Вопрос в том, что ты почему-то считаешь, что он единственно верный, хотя это совсем не так.
Yandex
Объявления
17.08.2014, 14:02     Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru