| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Char или String ? |
| Автор: hoz 29.1.2014, 19:05 | ||||
| Как я понимаю тип char судя по учебникам служит для хранения символов. Прочитал кроме того http://adorning.ru/2010/01/10/c-urok-6-stroki/, и всё-таки запутался. В статье сказано:
А дальше код:
Получается, что в массиве будет 50 элементов разером в 1 символ? Т.е. 50 символов(грубо говоря по 1-ой цифре или букве, ну или знаку разумеется каком-нить), верно? |
| Автор: vinter 29.1.2014, 19:59 | ||
Верно. Но если ты не записывал туда символы, то там будет мусор(тоже символы, но малопредсказуемые). Тип char служит для хранения данных размеров в 1 байт(не совсем точно, но для большинства систем это так). Разумеется ты можешь хранить там как символы, так и то, что не имеет для тебя символьной нагрузки, например:
Т.е. воспринимай char как тип размером в 1 байт и помни, что char, char*, char[], как правило, интерпретируются различными стандартными функциями как символ и строка(набор символов) соответственно. Но это не означает, что они могут интерпретироваться только так. Это вопрос использования. |
| Автор: trinitr0 30.1.2014, 10:00 | ||||
| тип char - это специальный объект, знимающий один байт в памяти и способный хранить небольшие целые числа (со знаком 'char': -128 до 127 и без 'unsigned char': 0 до 255):
эквивалтно:
|
| Автор: vinter 30.1.2014, 11:35 | ||||
Ты ошибаешься. Языки программирования не надо объединять, у каждого свои правила. C++, в общем случае, ничего нулём не инициализирует. Для подобной инициализации должны быть специальные условия(глобальные переменные и т.п.)
C++ довольно низкоуровневый язык, в ассемблере вообще нет типов, есть разное количество памяти выделенное под некую сущность. C++ просто имеет имена для наиболее популярных размеров. Так char это имя для куска памяти размером в 1 байт. Так уж повелось, что он еще и представляет ASCII и поэтому, вероятно, называется char. Это просто принято хранить символы в char и интерпретировать переменные типа char как символьные, но это не правило, это просто традиция. Так как набор символов представляет собой строку, то и в C++ это так: если у тебя есть массив char(char[]), то это можно интерпретировать как строку. Тоже самое с указателем. |
| Автор: borisbn 30.1.2014, 16:36 | ||||
По стандарту
Хотя, действительно, я сталкивался с одной специфической платформой, у которой sizeof( char ) равнялся 4. |
| Автор: vinter 30.1.2014, 17:08 |
хм, то ли раньше(в редакции 2003 года) этой строчки не было, то ли я просто запутался. |
| Автор: borisbn 30.1.2014, 17:23 |
| Doc No: N1905=05-0165 Date: 2005-10-19 Пункт 5.3.3 (Sizeof). Подпункт 1. |
| Автор: vinter 30.1.2014, 18:23 |
| Точно, вспомнил, это размер байта в стандарте не определён. Спасибо за напоминание. |