Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 13:17   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Как объявлять строки?

char res = "Yes";
Не работает

char res[10] = "Yes";
работает криво)

char* res = "Yes";
работает идеально)

Как правильно и что даёт зведочка?
TwiX вне форума Ответить с цитированием
Старый 16.09.2009, 13:23   #2
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
char res = "Yes";
Не работает

char res[10] = "Yes";
работает криво)

char* res = "Yes";
работает идеально)

Как правильно и что даёт зведочка?
Ну книжки хоть почитай, а?
string res = "yes";
И без всяких звездочек.
Не забудь написать
#include <string>
using namespace std;
LaptevVV вне форума Ответить с цитированием
Старый 16.09.2009, 13:28   #3
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
char res = "Yes";
Не работает
Здесь в символ пытаешься строку засунуть..
Цитата:
char res[10] = "Yes";
работает криво)
нормально
Цитата:
char* res = "Yes";
работает идеально)
ага.. res указывает на константу..
тоесть res[0] = 'a';// получишь ошибку..

Можно так делать
Код:
char res[] = "Yes"
или как LaptevVV показал.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 16.09.2009, 13:41   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

ISergeyN, спасибо.
звёздочка разве означает константу???
да и если я пишу так:
char res[] = "Yes";
а потом пытаюсь res[] = "No"; то она мне пишет ошибку. А если стоит звёздочка, то всё хорошо)

LaptevVV, если бы у меня возник вопрос про string, я бы так и спросил!
И книжки я читал, и читаю!
TwiX вне форума Ответить с цитированием
Старый 16.09.2009, 13:48   #5
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
звёздочка разве означает константу???
Звездочка означает указатель. А вот это вот: "Yes" - константа.

Цитата:
char res[] = "Yes";
а потом пытаюсь res[] = "No"; то она мне пишет ошибку. А если стоит звёздочка, то всё хорошо)
Первая строка инициализирует массив(или как это там называется).
Везде далее нужно писать :
Код:
res = "No";
mMAg вне форума Ответить с цитированием
Старый 16.09.2009, 13:56   #6
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
LaptevVV, если бы у меня возник вопрос про string, я бы так и спросил!
И книжки я читал, и читаю!
Значит либо плохо читаешь, либо читаешь не те.
Весьма рекомендую исходную книжку по С Кернигана и Ричи.
Мне кажется, с этого надо начинать.
Там об указателях на символы достаточно хорошо написано.
LaptevVV вне форума Ответить с цитированием
Старый 16.09.2009, 13:57   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Нет... Если далее так писать, то выдаёт ошибку:
[BCC32 Error] main.cpp(165): E2277 Lvalue required

2) В чём разница между "char* res" и "char *res"?
TwiX вне форума Ответить с цитированием
Старый 16.09.2009, 14:03   #8
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
ISergeyN, спасибо.
звёздочка разве означает константу???
да и если я пишу так:
char res[] = "Yes";
а потом пытаюсь res[] = "No"; то она мне пишет ошибку. А если стоит звёздочка, то всё хорошо)
Объвление массива без указания размера с инициализацией:
char res[] = "abs"; - 4 байта
Массиву присваивать новое значение нельзя. Поэтому
res[] = "no";
является ошибкой.
char *res = "abs"; - это объявление указателя на константу с инициализацией.
С указателями работа - это отдельная БОЛЬШАЯ и СЛОЖНАЯ тема в С (и по наследству в С++).
LaptevVV вне форума Ответить с цитированием
Старый 16.09.2009, 14:04   #9
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
2) В чём разница между "char* res" и "char *res"?
Разницы нет.
Можно еще и char * res;
LaptevVV вне форума Ответить с цитированием
Старый 16.09.2009, 14:10   #10
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Действительно нельзя...
Код:
strcpy(m,"dfsaf");
А вот так вот вроде можно.
mMAg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где объявлять классы в C++ builder 6.0 Go6a Помощь студентам 1 06.07.2009 11:47
Как объявлять (или описывать) метод locate? Andr_zdes Помощь студентам 6 21.05.2009 14:22
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
Как прономеровать строки ASS84 БД в Delphi 11 30.07.2008 20:27
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45