ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. По краткому определению, указатель – это переменная, содержащая адрес другой переменной [1]
По краткому определению, указатель – это переменная, содержащая адрес другой переменной [1]. Так как указатель содержит адрес переменной (объекта), это дает возможность «косвенного» доступа к ней. Для понимания работы и назначения указателей рассмотрим упрощенную схему организации памяти компьютера. Память представляет собой массив последовательно пронумерованных или адресованных ячеек, с которыми можно работать по отдельности или связанными кусками. Известно, что различным типам данных отводится определенное количество байтов памяти. Поэтому указатель – это группа ячеек, в которых может храниться адрес. Например, если переменная ch имеет тип char, а ptr (англ. pointer – «указатель») есть указатель на переменную ch, то взятие адреса переменной ch осуществляется с помощью унарного (одноместного) оператора &, т. е. ptr = &ch; Приведенная инструкция означает, что переменной ptr присваивается адрес ячейки ch. Принято считать, что ptr указывает на ch. Оператор & применяется только к объектам, расположенным в памяти: переменным, элементам массива. Операндом оператора & не могут быть ни выражение, ни константа, ни регистровая переменная [1]. Унарный оператор & называется еще оператором адресации [2]. Имена указателям даются в соответствии с правилами, приятыми в языке программирования С для обычных переменных. Унарная операция * называется операцией ссылки по указателю (indirection), или разыменования (dereferencing). Если применить ее к указателю, то получим объект, на который он указывает. Рассмотрим пример. Пусть х и у – целые переменные, а *ptr – указатель на такую переменную. Поставим задачу присвоения переменной у значения переменной х с помощью указателя. Фрагмент С -кода будет следующим: int x = 1, y = 2;
|