Имя пользователя:
Пароль:
 

Название темы: Строки в С\С++
Показать сообщение отдельно

Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


ruslandh
Вынужден разочаровать, но ты не прав.
Цитата:
для строки *char - надо так:

char *point,*psh="Some_string";

....
point=psh;
point='A'
pch='B'
...
point=pch+1
point='A'


А что по вашему должна делать команда
*pch='A' ? - записать по адресу, указанному в pch значение 'A' ? Т.е по адресу 0x00129 записать 0x100 ?
point = pch; //Правомерно, оба указателя ссылаются на один и тот же адрес.
point = pch+1; //Правомерно, point указывает на второй символ строки.

point = 'A'; //
pch='B'; * * // А вот так нельзя. Указателю нельзя присваивать неадресные значения.

Надо именно:
*point = 'A';
*pch = 'B'; //Т.е. по адресам, куда они указывают записываются значения того типа, указателями на которые они являются.

Это эквивалентно записи:
point[0] = 'A';
pch[0] = 'B';

Другое дело, что как сказал ivank, в первом случае была попытка через указатель изменить значение константы.


[s]Исправлено: shurikan, 1:56 7-04-2003[/s]

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 01:54, 07-04-2003 | #5

Название темы: Строки в С\С++