Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Ошибка: "i" не был объявлен в этой области - C++
#include <iostream> #include <cstdlib> #include <time.h> using namespace std; int main() { int n; srand(time(NULL)); ...

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

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

Как узнать номер элемента, который был нажат? - jQuery
<div id="disks"> </div> var d = $('#disks'); for (var i = 1; i<=4; i++){ d.append('<span...

Как получить значение и индекс того элемента,который был изменен в dataGridView - C#
Как получить значение и индекс того элемента,который был изменен в dataGridView

Изменение метода вне класса, где он объявлен - Java SE
Всем доброго времени суток. Возникла такая проблема - есть метод (clickBlock), объявленный в класс PlayerControllerMP. Как в каком-нибудь...

4
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
30.10.2013, 23:12 #2
В первом примере не должно быть UB.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.10.2013, 23:27 #3
Цитата Сообщение от mzarb Посмотреть сообщение
char str[] = "zzarb";
str[0] = 'm'; // Undefined Behavior
это не UB, вот UB
C++
1
2
char* s = "hello";
s[0] = 't';
0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 23:40 #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 ?
0
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
31.10.2013, 00:17  [ТС] #5
Тут последний(13) комментарий и там объясняется почему, там есть ссылки с доказательствами. Просто думал, что вы это своими словами объясните. Но я задал вопрос прежде, чем увидел те ссылки, так что уже не нужно.
0
31.10.2013, 00:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 00:17
Привет! Вот еще темы с ответами:

Как сравнить цвет, который выбран пользователем с тем, который был задан ранее случайным образом? - C++ Builder
Здравствуйте! Прошу подсказать, помочь Задача в том, чтобы на экране появлялись шарики разных цветов, через некоторое время они все...

Изменение программы чтобы в массиве В, элемент с номером i был равен минимальному среди первых i элементов массива А - PascalABC.NET
Здравствуйте! помогите пожалуйста решить задачу: Измените программу, приведенную ниже, так, чтобы в массиве В, элемент с номером i был...

Как обменять два элемента массива местами если эти два элемента это объекты? - C#
как обменять два элемента массива местами если эти два элемента это объекты?

Выделить в результирующи массив каждый положительный элемент массива Х, который расположен после кажого отрицательного элемента массива Х - C#
Даны одномерные массивы Х и Z. Реализовать такой алгоритм . Выделить в результирующи массив каждый положительный элемент массива Х,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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