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

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

Войти
Регистрация
Восстановить пароль
 
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
#1

Почему изменение элемента массива, который был объявлен с размером [] - это UB? - C++

30.10.2013, 22:58. Просмотров 298. Ответов 4
Метки нет (Все метки)

C++
1
2
char str[] = "zzarb";
str[0] = 'm'; // Undefined Behavior
C++
1
2
char str[6] = "zzarb";
str[0] = 'm'; // OK
Что-то я не пойму, почему тогда все нормально, если указать размер вручную, а не давать компилятору автоматически высчитать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2013, 22:58     Почему изменение элемента массива, который был объявлен с размером [] - это UB?
Посмотрите здесь:

Вывести на экран каждые три элемента массива размером 15 - C++
Как написать задачу? Вывести на экран каждые три элемента массива размером 15

Узнать номер элемента массива на который указывает указатель - C++
Может вопрос глупый но тока что об этом задумался! Можно ли узнать номер элемента массива на который указывает указатель не используя...

Объяснить почему выводит на экран не тот элемент массива, который ожидается - C++
#include <iostream> using namespace std; int main() { int mas = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; cout << mas << endl; cout...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

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

В одномерном массиве, который состоит из n вещественных элементов подсчитать номер минимального элемента массива - C++
В одномерном массиве, который состоит из n вещественных элементов подсчитать: 1) номер минимального элемента массива; 2)сумму...

Почему разные адреса одного и того же элемента динамического массива? - C++
Я создаю динамический массив и отправляю его в функцию, если потом сравнивать адреса элементов массива в главной и вызываемой функции они...

Воспроизводится только тот код, который был до текущего - C++
Ребят, слушайте, у меня тут одна проблема. Я случайно дал команду Студие, чтобы она запускала последний успешно-скомпилированный код, и...

Применить изменения к файлу, который был спроецирован в память, и там изменен - C++
Вот я отобразил файл в память, произвел с файлом в памяти нужные манипуляции и теперь мне нужно сохранить эти самые манипуляции в файле ....

Пользователь вводит с клавиатуры N чисел. Определить номер максимального элемента, выдав сообщение вида "Максимальный номер элемента был введен 7-м" - C++
Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
30.10.2013, 23:12     Почему изменение элемента массива, который был объявлен с размером [] - это UB? #2
В первом примере не должно быть UB.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.10.2013, 23:27     Почему изменение элемента массива, который был объявлен с размером [] - это UB? #3
Цитата Сообщение от mzarb Посмотреть сообщение
char str[] = "zzarb";
str[0] = 'm'; // Undefined Behavior
это не UB, вот UB
C++
1
2
char* s = "hello";
s[0] = 't';
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 23:40     Почему изменение элемента массива, который был объявлен с размером [] - это UB? #4
Цитата Сообщение от mzarb Посмотреть сообщение
C
1
2
char str[] = "zzarb";
str[0] = 'm'; // Undefined Behavior
Тогда, по вашему,
C++ (Qt)
1
2
int32_t iA[] {0,1,2,3,4,5};
ia[0] = 10;
тоже UB ?
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
31.10.2013, 00:17  [ТС]     Почему изменение элемента массива, который был объявлен с размером [] - это UB? #5
Тут последний(13) комментарий и там объясняется почему, там есть ссылки с доказательствами. Просто думал, что вы это своими словами объясните. Но я задал вопрос прежде, чем увидел те ссылки, так что уже не нужно.
Yandex
Объявления
31.10.2013, 00:17     Почему изменение элемента массива, который был объявлен с размером [] - это UB?
Ответ Создать тему
Опции темы

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