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

Указатель на строковую константу. В чем отличие двух приведенных примеров - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму элементов массива, стоящих на четных местах http://www.cyberforum.ru/cpp-beginners/thread1082737.html
Здравствуйте! Помогите, пожалуйста, с задачей: необходимо найти сумму элементов массива, стоящих на четных местах. Понимаю, задача легкая, но никак не могу разобраться именно с четными местами...
C++ для x изменяющегося от a до b для x изменяющегося от a до b http://www.cyberforum.ru/cpp-beginners/thread1082717.html
Объявление переменных C++
Помогите с объявлением переменных, даны такие объявления: int m1; int *m2; int **m3; int m4; int *m5; int **m6; int (*m7); int (*m8)(int, int, int);
Вычислить минимальный по модулю элемент массива C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.минимальный по модулю элемент массива; 2.сумму модулей элементов массива, расположенных после первого элемента, равного...
C++ Как открыть файл в требуемой для него программе? http://www.cyberforum.ru/cpp-beginners/thread1082703.html
как указать программе на файл и просмотреть информацию и запустить при желании? расширение может быть любое...
C++ Как получить доступ к элементам массива работая с ним как с указателем и адресной арифметикой int array = { {1,2,3}, {1,2},{1,2,3,4}, {1,2,3,4},{1,2,},}; for(int i = 0; i < 25; i++) printf("%d ", array); Как можно представить array в виде указателя *(array + ...) ? В... подробнее

Показать сообщение отдельно
Убежденный
Ушел с форума
Эксперт С++
15690 / 7200 / 1138
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
27.01.2014, 16:32
Цитата Сообщение от Vegas_I Посмотреть сообщение
Тогда получается, что это (char *x = "Текст")
своего рода динамический массив, а значит можно изменять и размер и содержимое.
Но в книжках написано, что это константа(т.е. изменять нельзя).
Получается противоречие. Где я ошибаюсь?
"Текст" в данном случае - это строковой литерал.
По стандарту языка C++, строковые литералы константны, а попытка их
изменения ведет к неопределенному поведению. Цитирую:

C++03, 2.13.4 String literals
1. A string literal is a sequence of characters (as defined in 2.13.2) surrounded
by double quotes, optionally beginning with the letter L, as in "..." or L"...".
A string literal that does not begin with L is an ordinary string literal, also
referred to as a narrow string literal. An ordinary string literal has type "array of n
const char"
and static storage duration (3.7), where n is the size of the string as
defined below, and is initialized with the given characters. A string literal that
begins with L, such as L"asdf", is a wide string literal. A wide string literal has
type "array of n const wchar_t"
and has static storage duration, where n is the size
of the string as defined below, and is initialized with the given characters.

2. Whether all string literals are distinct (that is, are stored in nonoverlapping
objects) is implementation defined. The effect of attempting to modify a string
literal is undefined
.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru