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

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

Войти
Регистрация
Восстановить пароль
 
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
#1

Символ конца массива char - C++

02.11.2013, 18:40. Просмотров 965. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток!

В книге Стефана Девиса "С++ для чайников" (страница 86) были затронуты массивы. Пусть существует такой массив...
C++
1
char szA[] = "abc"
Будет ли конец массива (szA[3]) инициализирован нулевым символом, то есть символом, которому соответствует код 0x0?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.11.2013, 18:41     Символ конца массива char #2
Да.
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
02.11.2013, 18:46  [ТС]     Символ конца массива char #3
А будет ли любой массив вне зависимости от типа данных оканчивать на нулевой символ?
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
02.11.2013, 18:50     Символ конца массива char #4
Цитата Сообщение от RareScrap Посмотреть сообщение
А будет ли любой массив вне зависимости от типа данных оканчивать на нулевой символ?
Окончательный элемент - 0 будет только в массиве символов, массивы остальных типов данных оканчиваются последним элементом массива.
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
02.11.2013, 18:57  [ТС]     Символ конца массива char #5
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Окончательный элемент - 0
Насколько я знаю, код обычного нуля 0x30. Под нулем вы имели ввиду символ с кодом 0x0?
Max Dark
В поиске работы
 Аватар для Max Dark
1548 / 1401 / 501
Регистрация: 09.10.2013
Сообщений: 3,184
Записей в блоге: 8
Завершенные тесты: 2
02.11.2013, 19:13     Символ конца массива char #6
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Окончательный элемент - 0 будет только в массиве символов, массивы остальных типов данных оканчиваются последним элементом массива.
и то в массиве символов он будет по умолчанию только если мы инициализируем его строкой с-формата
Но в большинстве случаев конец строки нужно устанавливать в ручную.

Добавлено через 1 минуту
Цитата Сообщение от RareScrap Посмотреть сообщение
Насколько я знаю, код обычного нуля 0x30. Под нулем вы имели ввиду символ с кодом 0x0?
он имел (char)0
скорее всего

Добавлено через 1 минуту
код '0' и 0 разные вещи
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,307
02.11.2013, 19:16     Символ конца массива char #7
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Окончательный элемент - 0 будет только в массиве символов,
фиг вам в строке
вот так будет
C++
1
char a[]="aaa";
вот так нет
C++
1
char a[]={'a','a',a'};
строка это не просто массив символов это массив символов с завершающим 0
разница в кавычках ' 'символ " " строка

Добавлено через 1 минуту
Цитата Сообщение от RareScrap Посмотреть сообщение
Насколько я знаю, код обычного нуля 0x30. Под нулем вы имели ввиду символ с кодом 0x0
да
и записывается в тексте он так '\0'
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 19:18     Символ конца массива char #8
Цитата Сообщение от RareScrap Посмотреть сообщение
А будет ли любой массив вне зависимости от типа данных оканчивать на нулевой символ?
Терминальный ноль ('\0') должен присутствотать в массивах char, которые обрабатываются, как строки стиля С. Функции, которые обрабатывают такие строки (strlen(), strcpy(), printf() и пр.), по терминальному нолю, определяют конец такой строки.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.11.2013, 19:18     Символ конца массива char #9
Цитата Сообщение от RareScrap Посмотреть сообщение
А будет ли любой массив вне зависимости от типа данных оканчивать на нулевой символ?
Нет. Очевидно, массив заканчивается на то, на что заканчивается его инициализатор. Это как раз "строки" заканчиваются нулевым символом, не массивы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 19:19     Символ конца массива char
Еще ссылки по теме:

C++ Ввести с клавиатуры символ (в переменную char) и определить, соответствует ли введенный символ 'Q' или 'q'
C++ В чем отличие двумерного массива типа char от массива указателей на char?
C++ Поворот массива на 90 градусов (cannot convert form char to char*)
array char* to char* (значения массива указателей в один указатель) C++
Определить символ конца строки в TextBox C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,307
02.11.2013, 19:19     Символ конца массива char #10
Цитата Сообщение от RareScrap Посмотреть сообщение
Будет ли конец массива (szA[3]) инициализирован нулевым символом, то есть символом, которому соответствует код 0x0?
не будет
поскольку ноль не влезет размер массива 3 и буквы 3, нулю деваться некуда
а в szA[4] будет 3 символа плюс 0
но при такой записи
C++
1
char szA[] = "abc"
образуется массив из 4х символов
Yandex
Объявления
02.11.2013, 19:19     Символ конца массива char
Ответ Создать тему
Опции темы

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