Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Указатели, константы


Автор: tofreesky 30.6.2010, 00:10
char *F = "123";

Когда пытаюсь изменить в строке символ - ошибка, из за того что строка доступна только для чтения.
Когда пишу так

char F[] = "123";

Все нормально. Разве есть различия. Напишите как трактуется первый и второй вариант.

Автор: Игорь1024 30.6.2010, 02:31
In first case you point to some memory area, therefore you can not change the value.
In second case you have the char array and can do everething you want.
Perhaps I made mistake in first case, but to my mind it's right.

Автор: susanin 30.6.2010, 09:58
Цитата(Игорь1024 @  30.6.2010,  02:31 Найти цитируемый пост)
In first case you point to some memory area, therefore you can not change the value.

так ведь данные то в этом участке памяти неконстантные...почему же тогда не получается изменить содержимое этого участка памяти?

Автор: mes 30.6.2010, 10:00
Цитата(susanin @  30.6.2010,  08:58 Найти цитируемый пост)
так ведь данные то в этом участке памяти неконстантные.

из за наследия С.. на самом деле запись должна выглядить  так :
const char * = ... 

пользуйте поиск, тема не раз обсуждалась.. 

Автор: Леопольд 30.6.2010, 14:00
susanin, надо включать максимальный уровень ворнингов. Для gcc это -Wall.

http://codepad.org/6HPA2QQk
warning: deprecated conversion from string constant to 'char*''

Автор: djamshud 1.7.2010, 16:02
Код

char *F = "123"; //указатель в константную область памяти
char F[] = "123";//массив (на стеке или в статик-памяти - пофиг). 


массив != указатель

>Для gcc это -Wall.

А -Wextra - это чуть более, чем максимальный?smile. А -pedantic? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)