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



циклоферон цена томск

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


for ( p=&a[0], i=1; I<=5; i++ ) Переменная p указывает на начало массива a. Переменная i пробегает значения от 1 до 5.
PR(d, p[i]); Ссылка p[i] последовательно указывает на элементы массива a. Ссылка p[5] указывает за массив a.

О массивах и индексах. Хотя до сих пор обозначение [] находило свое обычное применение - индексация массива, на самом деле [] обозначает общую операцию индексирования. x[i] определяется как *(x+i), где x обычно является адресом и i - целое. В соответствии с правилами адресной арифметики i должно быть кратно sizeof(базовый тип x). (К этому моменту должно быть ясно, почему массивы индексируются начиная с 0. Имя массива по сути есть ссылка на первый элемент массива. Индекс - это смещение относительно начала массива. Смещение первого элемента относительно начала массива равно 0.) В предыдущем фрагменте i используется для индексации ссылки p. p[i] = (p+i) = *(a+i) = a[i]. Переменная i пробегает значения от 1 до 5. Когда i=5, p+i указывает за массив a, т.е. значение, находящееся по адресу p+i неизвестно. Это настолько распространенная ошибка, что стоит подчеркнуть опять: индекс массива из n элементов принимает значения от 0 до n-1.




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