Страница 1 из 1
Объявление переменной
Добавлено: Вс мар 21, 2010 08:45:22
WorkPage
Просьба не пинать.
Столкнулся с такой конструкцией
char * t;
...
...
...
t = (* t++);
Для чего нужна звёздочка?
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 10:06:20
kushman
Звездочка если мне память не изменяет это указатель.
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 10:09:32
WorkPage
Поясните plz что в данном случае обозначает этот "указатель" и для чего он нужен?
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 11:24:13
PB_EXPERT
Как правило, это указатель на начало области памяти (переменная, массив, струкутра и т. д.), но может быть и указатель на процедуру или метку. Это зависит от того, что в этот указатель запишешь.
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 12:45:39
WorkPage
Я никак не могу понять значение этой строки.
t = (* t++);
переменной t присваивается значение t++. это понятно. Но звезда зачем?! Это указатель куда? Вообще непонятно.
И в разделе объявления переменных та же история. Что измениться, если звёздочки убрать?
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 15:03:23
zebrox
Код: Выделить всё
Error: a value of type 'unsigned char' can't be assigned to an antity of type 'unsigned char *'
Не компилится.
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 16:35:18
ARV
WorkPage писал(а):Я никак не могу понять значение этой строки.
t = (* t++);
переменной t присваивается значение t++. это понятно. Но звезда зачем?! Это указатель куда? Вообще непонятно.
И в разделе объявления переменных та же история. Что измениться, если звёздочки убрать?
я тоже не понимаю, что сия строка обозначает...
t - это указатель на char, т.е. переменная
t содержит АДРЕС ячейки, в которой хранится байт-символ.
*t - это так называемое "разименование" указателя, т.е. доступ к данным, на которые он указывает. в вашем случае это обращение к той самой ячейке с символом.
*t++ означает, что сначала будет взято (и использовано) значание из ячейки, а затем указатель (т.е. адрес) будет увеличен на 1.
t = *t++; означает буквально следующее: указателю присваивается значение символа (!!!), а затем значение указателя увеличивается на 1 (!!!). что сие значит - для меня загадка...
Re: Объявление переменной
Добавлено: Вс мар 21, 2010 23:58:29
Murav
ARV писал(а):
t = *t++; означает буквально следующее: указателю присваивается значение символа (!!!), а затем значение указателя увеличивается на 1 (!!!)
Точнее переменной t будет присвоено значение на которое она указывал и переменная t будет увеличена на 1. Порядок этих действий неопределён, поэтому такую конструкцию использовать нельзя(и например a=a++ - 2 - тоже). А вообще данная строка - это скорее всего ошибка.