Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666

Что значит "изменить" в C++?

23.04.2018, 18:37. Показов 4547. Ответов 76
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В одной из тем было написано
Цитата Сообщение от Croessmah Посмотреть сообщение
Objects of array types cannot be modified
Чтобы не оффтопить там (т.к. там вопрос про устройство массивов) и не мучать тему 2014-го года, создам новую.
Как понимать сие утверждение?
Возьмём код
C++
1
2
int a[2] = { 0, 2, };
a[1] = 1;
По-моему, массив a после a[1] = 1 изменился.
Получается, "Objects of array types cannot be modified" — неправда? Или всё же массив a не изменился?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2018, 18:37
Ответы с готовыми решениями:

Sleep(8000) - что значит? На что можно заменить в борланд с++?
Не распознаёт Sleep(8000) . Если за комментировать пишет что f заданно но не используется. Как исправить? ...

Что значит Handle hf? Что в эту функцию нужно передавать
мне нужно создать функцию Node * ReadNode(HANDLE hf); (Node это структура) Так вот вопрос в том что значит Handle hf? Что в эту функцию...

Неправильный тип параметров подпрограммы-- что это значит и как изменить?
Выдает ошибку:" Неправильный тип параметров подпрограммы" - как это исправить? Разработать модуль, в котором размещены подпрограммы,...

76
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
25.04.2018, 03:02
Студворк — интернет-сервис помощи студентам
rat0r, башня не контейнер для кубиков.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
25.04.2018, 19:41  [ТС]
Croessmah, массив — это последовательность из N идущих подряд элементов (обратное не верно, конечно, не всякие N идущих подряд объектов одного типа образуют массив).
Ну может башню стоит положить на бок, т.е. выставить кубики в ряд. Это будет массив кубиков.

А аналогия со шкафом подразумевает, что массив — это нечто бОльшее, чем идущие подряд элементы. Что вот есть массив. И есть элементы (трусы). И что элементы туда можно положить, а можно не класть.

Добавлено через 6 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
то есть, нельзя изменить не адрес ни размер созданного объекта
Если "Objects of array types cannot be modified" говорит о том, что нельзя менять адрес и тип объекта, почему оно ссылается на [basic.lval], а не на [intro.object]? Где, в частности, написано
"The properties of an object are determined when the object is created.
An object can have a name ([basic]).
An object has a storage duration ([basic.stc]) which influences its lifetime ([basic.life]).
An object has a type ([basic.types])."
0
25.04.2018, 19:42

Не по теме:

Цитата Сообщение от rat0r Посмотреть сообщение
И что элементы туда можно положить, а можно не класть.
Золотые слова ваши!:)

0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
22.07.2018, 21:37  [ТС]
Цитата Сообщение от Captain Maxee Посмотреть сообщение
Изменяя подобъект — мы изменяем подобъект, а массив остается неизменным. Имеется в виду, что он все так же остался той же размерности, все так же содержит тот самый подобъект
Ок. Тогда так:
C++
1
2
int a[2] = { 0, 1 };
new (&a[1]) int{2};
Теперь массив не содержит тот самый подобъект. Он изменился?
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,443
25.07.2018, 03:58
массив это лексическая абстракция, нет никаких массивов, создавая массив, мы просто просим систему зарезервировать место для наших данных ты просто создал указатель на ссылку на 2й элемент массива ты просто создал ссылку на второй элемент массива и передал через нее в массив число 2
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2018, 10:59
Цитата Сообщение от vlisp Посмотреть сообщение
массив это лексическая абстракция
В этом смысле, инстанс любого шаблона
Цитата Сообщение от vlisp Посмотреть сообщение
это лексическая абстракция
а мы тут пишем просто буквы. vlisp, в данной теме, как я (и не только) увидел, речь идёт о массиве как о инстансе типа. То есть int a[10] это конкретизация обобщённого массива int[] с целым параметром 10 в качестве размера. И реализация (вшито в компилятор или реализовано библиотекой) вообще не важна. Важно что в стандарте написано - неизменяемый. И вопрос о том, что поскольку любой тип в этом смысле априори есть неизменяемый, то чего ради, это нужно было писать?
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,443
25.07.2018, 16:53
Цитата Сообщение от IGPIGP Посмотреть сообщение
в стандарте написано - неизменяемый
В С/С++ действительно нет изменяемых массивов, они есть например в паскале или в бейсике
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
25.07.2018, 17:03
Цитата Сообщение от vlisp Посмотреть сообщение
В С/С++ действительно нет изменяемых массивов
а) в С99 они есть, но требуют спец. опции компилятора
б) в С++ есть контейнер std::vector, который сам по себе также неизменяем, но который содержит указатель на динамически выделенную память произвольной длины.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2018, 17:25
Цитата Сообщение от vlisp Посмотреть сообщение
В С/С++ действительно нет изменяемых массивов, они есть например в паскале или в бейсике
Но вопрос темы ведь:
Цитата Сообщение от rat0r Посмотреть сообщение
Что значит "изменить" в C++? - C++
Цитата Сообщение от rat0r Посмотреть сообщение
По-моему, массив a после a[1] = 1 изменился.
то есть не о горных массивах. И фразой
Цитата Сообщение от vlisp Посмотреть сообщение
В С/С++ действительно нет изменяемых массивов
Вы согласились с тем, что пишу и я. Я там говорил ещё, что в С++ всё неизменяемо в том смысле, в котором массив неизменяем.
Цитата Сообщение от TRam_ Посмотреть сообщение
в С99 они есть, но требуют спец. опции компилятора
Это же не о CLANG и констанстности времени компиляции? Расскажите подробнее. И где прочесть об этом?
Цитата Сообщение от TRam_ Посмотреть сообщение
в С++ есть контейнер std::vector
и ещё std::array даже. Но в топике говорится о массивах синтаксиса языка С.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
25.07.2018, 17:31
Цитата Сообщение от IGPIGP Посмотреть сообщение
Расскажите подробнее.
Естественно ни о каких константах времени компиляции речь не идёт, даже sizeof() для подобных переменных будет рассчитываться во время выполнения.
https://en.wikipedia.org/wiki/... ngth_array
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2018, 17:43
Цитата Сообщение от TRam_ Посмотреть сообщение
Естественно ни о каких константах времени компиляции речь не идёт, даже sizeof() для подобных переменных будет рассчитываться во время выполнения.
Там же про С99 (когда клинит переключение регистра получается C(( ). Я в спешке решил что Вы о плюсах 98. А тут про С++ ведь? Вы и vlisp, заодно, да?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
25.07.2018, 18:20
Цитата Сообщение от IGPIGP Посмотреть сообщение
А тут про С++ ведь?
Тут было написано C/C++, т.е. не только С++. Ну а в С++ да, никаких переменных массивов нет и в идеологию они не укладываются.
0
 Аватар для vlisp
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,443
25.07.2018, 18:42
для начала определитесь, что значит "изменить массив"
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.07.2018, 18:47
Цитата Сообщение от TRam_ Посмотреть сообщение
C/C++,
В топике нет C. А раздел отдельный есть. Жарковато да?
Цитата Сообщение от vlisp Посмотреть сообщение
для начала определитесь, что значит "изменить массив"
Это вообще непонятно. Есть топик и есть цитата из стандарта. Вроде же не о том как получить неконстантную lvalue ссылку на элемент говорим?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
25.07.2018, 19:06
vlisp, изменение массива (не путать с изменением элементов массива) - либо модификация типа, который он хранит, либо модификация числа элементов, которые в нём хранятся, во время выполнения программы.

И то, и другое в С++ запрещено.

Добавлено через 4 минуты
Вместо этого разрешено менять число элементов, управляемых контейнером std::vector (который ретранслирует все свойства массива, в т.ч. непрерывность последовательности элементов в памяти).
2
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
26.07.2018, 16:03  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
В этом смысле, инстанс любого шаблона
Массив это не "встроенный шаблонный тип", хватит эту отсебятину проталкивать.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
26.07.2018, 16:24
Цитата Сообщение от rat0r Посмотреть сообщение
Массив это не "встроенный шаблонный тип", хватит эту отсебятину проталкивать.
Я вот вас не спросил хватит или нет. Скажите тогда, что такое массив.
Я, когда говорил о том, что массив это встроенный шаблон (не шаблонный тип а именно шаблон типа или шаблон класса, правильно было бы сказать) имел ввиду именно то, что я имел ввиду. Нет такого типа - массив. Для получения инстанса надо задать тип иэлемента и размер (не типовой шаблонный параметр). Тогда получается инстанс-тип. И впринципе неважно, как это реализовано.
rat0r, в этой теме самое главное, что, скажем, int[5] и int[10], это разные типы. И именно так как я нашёл нужным, это объяснить я и объясняю. Вам я не указ, что и как говорить. В отличие от вас. Но в мой адрес таких вот выпадов типа:
Цитата Сообщение от rat0r Посмотреть сообщение
хватит эту отсебятину проталкивать
прошу больше не делать. Тут всё отсебятина, кроме буквального цитирования. Однако, если кому-то нужен твёрдый источник, то это точно не моя голова. Есть книги, стандарт... и вы вконце концов. Поэтому, давайте каждый будет делать своё дело.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2018, 16:24

Что значит public string T и все что дальше в приведенном коде?
class String { private string A; public String() { } public string T { ...

6 cores are activated что это значит и что с этим делать?
Доброго времени суток уважаемые форумчане. Возникла вот такая незадача с компом. Пишет 6 cores are activated при загрузке (в том же меню...

Написать что значит каждая строчка и за что она отвечает
Program ABC const n = 5; var a: array of integer; i, S, p: integer; begin s := 0; p := 1; for i := 1 to n do

Что значит исследовать сходимость метода (Якоби) и что за график нужно построить
Здравствуйте, вопрос в следуещем. В лабе по ЧМ нужно решить СЛАУ методом Якоби(что я сделал) и исследовать сходимость метода, построить...

Что значит это условие? Немогу расчехлить на что тут идёт проверка!!!
НЕмогу понять на что идет проверка. if monthof(DateTimePicker1.date+33)<9 then radiobutton3.Checked:=true else ...


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

Или воспользуйтесь поиском по форуму:
77
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru