Найти в Дзене
D21nk Master

В какую сторону указывает указатель?

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

Ему уже 46 лет,без учёта обновлений,а он всё ещё актуален и всё так же эффективен.Многие его сторонятся думая,что он сложный.Сегодня мы как раз затронем ту самую тему,из-за которой его считают сложным.

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

Если взять в пример обычную переменную-она хранит значение,указатель же хранит адрес.Раз уж у нас есть адрес-то значит по нему можно что-то хранить,допустим "метку" на открытый файл,мы так же можем динамически изменять память и многое другое,о чём ещё поговорим.

На сегодня разберём ещё несколько примеров использования указателей:

void main()
{
int num=10;
int *pnum;//'*' создаётся указатель
pnum=#//указатель может хранить только адрес
printf("&pnum=%0x\n",&pnum);
printf("pnum=%0x\n",pnum);
printf("*pnum=%0x\n",*pnum);
printf("&num=%0x\n",&num);
printf("num=%d\n",num);
}

Соберите этот код и просмотрите вывод.

Первый вывод-это адрес самого указателя в памяти,второй-значение указателя,как мы помним-там лежит адрес переменной num,в третьей строчке-у нас происходит разыменовывание,дальше думаю понятно,остановимся на разыменовывании.

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

Приводя аллегорию:мы ищем человека в одном доме,находим там подсказку,подсказка отправляет нас в другой дом,а там мы уже находим нужного человека.

Наше первое знакомство с указателями подходит к концу,в заключение добавлю,что чем эффективнее вы владеете указателями-тем эффективнее ваш код,поэтому-если у вас есть какие-то либо проблемы с пониманием указателей-не стесняйтесь и спрашивайте обо всё в группе.Всего доброго!