Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

чем отличаются char* и char в с++? что это такое?

Себастьян Пареро Ученик (171), закрыт 13 лет назад
Лучший ответ
Илья Лебедев Гуру (3630) 13 лет назад
char* - указатель, char - переменная символьная
Остальные ответы
Удачник Высший разум (141927) 13 лет назад
char - это переменная типа символ. Если в него записать любую строку, например:
"а", "тра-ля-ля" или "18", то он запишет первый знак, "а" или "т", или "1".
Если записать число 18, то он скорее всего выдаст ошибку "неправильный тип", но точно не помню.
На всякий случай - лучше так не рисковать.

char* - это указатель на переменную символьного типа, описанную в первом пункте.
Что такое указатели вообще, читай в самоучителях по языку, я сам это плохо понимаю.
Знаю только, что они используются для указания на элемент массива, но не только.
На самом деле их применение намного шире.
Николай-Марьян Соколовский Профи (643) 13 лет назад
char, как уже было сказано - это переменная для хранения символа.
char ch = 'a';
Строка вида ch = "setgdfc"; даст ошибку компиляции (нельзя преобразовать строку к символу) .
Приравнивание вида char ch = 13 даст символ с кодом 13. (Так же, как и приведение к char; приведение же char'а к int'у даст код символа) .
char* - это указатель на элемент (ы) типа char. Может указывать на один элемент (и тогда память выделяется так: char * ptr = new char;) или на массив char'ов (тогда char * m = new char[10]; Где в скобках - размер. )
Ах да, в конце работы желательно память освободить - соответственно delete ptr; и delete [ ]m;
Основное применение массива char'ов - строка (чаще применялась в С. теперь вместо неё чаще используются элементы класса string).
Для обозначения конца строки последним должен идти символ с кодом 0. Он может находится в любом месте массива.
Например, работа с char * как со строкой:
char * name[50];
cout << "what is your name? ";
cin >> name;
В отличие от элементов класса string память выделяется статически, в тот момент, когда вы сами это делаете.
Поэтому существует опасность переполнения, когда в строку было записано больше, чем было выделено места. Её результат - непредсказуемое поведение.
Так же непредсказуемое поведение ожидает вас, если вы попытаетесь работать так: char * line = "Вася"; (не происходит выделения памяти.
Ах да, ещё: символ в одинарных кавычках (') интерпретируется как символ, а один или несколько символов в двойных кавычках (") - как строка, заканчивающаяся нулевым символом.
А вообще, читайте умные книжки, там всё тысячу раз описано.
Михайл Михайлович Знаток (371) 7 лет назад
char* - указатель на тип char! char символьная переменная
Похожие вопросы