Задачи по языку С



         

Ссылки и массивы 1.2.


int *p; Описание вида type *x сообщает транслятору, что когда *x появляется в выражениях, то это значение типа type. Переменная x - ссылка на переменные типа type и принимает в качестве значения адреса переменных типа type. type - базовый тип для x. В этой задаче переменная p описана как ссылка на целое, т.е. базовый тип для p - int.
for ( p=&a[0]; &a[0] дает адрес a[0].
p<=&a[4]; Элементы массива хранятся в памяти в порядке возрастания индексов, т.е. a[0] предшествует a[1], которое предшествует a[2], и т.д. Так что p, инициируемое значением &a[0], меньше, чем &a[4].
PR(d, *p); Выражение *p дает целое, хранящееся по адресу, содержащемуся в p. Поскольку p содержит &a[0], то *p есть a[0].
p++ Если к ссылке применить операцию увеличения, то она будет указывать на следующий элемент базового типа. Фактически же значение ссылки увеличивается на sizeof(базовый тип). В языке не предполагается проверка того, что получившийся в результате адрес действительно есть адрес доступного элемента базового типа. В этой задаче p будет указывать на следующий элемент массива a.
p<=&a[4]; Значение p проверяется на конец массива a. Цикл заканчивается, когда p будет указывать на последний элемент массива. В теле цикла p последовательно указывает на элементы массива в порядке возрастания индексов.




Содержание  Назад  Вперед