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

Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? - C++

Восстановить пароль Регистрация
 
 
casper007
61 / 61 / 21
Регистрация: 12.12.2013
Сообщений: 375
10.01.2014, 21:36     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? #1
C++
1
2
int k;
int mass[k];//к-еще не инициализирован, и поэтому выводится ошибка, а менять значение нельзя
Очевидно, что нужен указатель. Но как это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 21:36     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение?
Посмотрите здесь:

C++ Дан массив действительных чисел, размерность которого N. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов
C++ Многомерный массив значений, размерность которого возрастает. Оцените код
C++ Какой ответ получим после запуска программы
Какой ответ получим после запуска программы C++
Какой ответ получим после запуска программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
11.01.2014, 01:03     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? #21
Цитата Сообщение от AnDrew_LP Посмотреть сообщение
Попробуйте запустить программу с delete[] и с delete
я пробовал Ничего не заметил Вот и спросил Как можно проверить

Добавлено через 17 секунд
вы сказали "никак"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
11.01.2014, 01:29     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? #22
Цитата Сообщение от ilja123 Посмотреть сообщение
я пробовал Ничего не заметил Вот и спросил Как можно проверить

Добавлено через 17 секунд
вы сказали "никак"
1)http://ru.wikipedia.org/wiki/%D0%9D%...BD%D0%B8%D0%B5
2)В Вашем коде был массив int, в моем собственный класс. Попробуйте скомпилировать без [] мой код, увидите результат.
3)Если с int в Visual Studio все нормально работает, не факт, что будет нормально работать с другим компилятором.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
11.01.2014, 02:50     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? #23
Цитата Сообщение от ilja123 Посмотреть сообщение
Как проверить??
по стандарту если выделяли память через new[], а удаляли через delete, то это UB

Добавлено через 4 минуты
5.3.5
1. The delete-expression operator destroys a most derived object (1.8) or array created by a new-expression.
delete-expression:
::optdelete cast-expression
::optdelete [ ] cast-expression
The first alternative is for non-array objects, and the second is for arrays. Whenever the delete keyword
is immediately followed by empty square brackets, it shall be interpreted as the second alternative.76
The operand shall have a pointer to object type, or a class type having a single non-explicit conversion
function (12.3.2) to a pointer to object type. The result has type void.
2. If the operand has a class type, the operand is converted to a pointer type by calling the above-mentioned
conversion function, and the converted operand is used in place of the original operand for the remainder of
this section. In the first alternative (delete object), the value of the operand of delete may be a null pointer
value, a pointer to a non-array object created by a previous new-expression, or a pointer to a subobject (1.8)
representing a base class of such an object (Clause 10). If not, the behavior is undefined.
In the second
alternative (delete array), the value of the operand of delete may be a null pointer value or a pointer
value that resulted from a previous array new-expression.78 If not, the behavior is undefined. [ Note: this
means that the syntax of the delete-expression must match the type of the object allocated by new, not
the syntax of the new-expression. —end note ] [ Note: a pointer to a const type can be the operand of a
delete-expression; it is not necessary to cast away the constness (5.2.11) of the pointer expression before it
is used as the operand of the delete-expression. —end note ]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2014, 15:01     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение?
Еще ссылки по теме:

C++ Какой ответ получим после запуска следующей программы
C++ ошибка после запуска программы!
Cоздать массив, размер которого задает пользователь C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.01.2014, 15:01     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение? #24
Цитата Сообщение от some_name Посмотреть сообщение
то мы "разорвем массив", а это уже серьезный косяк.
Мы не массив разорвём, мы разорвём себе мозг, выискивая, по какой причине у нас программа крашится в рантайме. Нельзя просто так освободить кусок массива, оператор delete/delete[] надо применять только к тому же адресу, что когда-то вернул соответствующий new/new[].
Yandex
Объявления
15.01.2014, 15:01     Как определить массив, размерность которого определяет пользователь после запуска программы на выполнение?
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru