![]() |
![]() |
compiler |
![]() ![]()
Сообщение
#1
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
есть програмка (на FP)
program PointerArray;интересует строчка [i]p := @pp[0]; что знасит этот индекс(0)? если пишем p := @pp; все работает так-же, но если указываем другой индекс получаем проблемку... Сообщение отредактировано: compiler - 18.07.2007 16:35 -------------------- Спасибо!
Удачи! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(compiler @ 18.07.2007 16:34) что знасит этот индекс(0)? Значит, что за точку отсчета при обращении к массиву через указатель, принимается нулевой элемент (в данном случае).Цитата(compiler @ 18.07.2007 16:34) если пишем p := @pp; все работает так-же, но если указываем другой индекс получаем проблемку... А вот смотри, почему ее получаем: первая итерация - p := @pp[0], при заходе в функцию Proc значение p[j] сравнивается с pp[j]. Поскольку в свою очередь, базовый индекс (та самая точка отсчета) P равняется 0, то P[j] = pp[base + j] = pp[j]. Что проверяется? Условие p[j] = pp[j]? Подставь то, что я написал, будет истина. Вторая (и последующие) итерации: базовый индекс больше нуля, следовательно в Proc проверяется условие pp[base + j] = pp[j] при base > 0. Если посмотреть, как ты заполнял массив pp, то понятно, что ни при одном base > 0 равенства не будет. Кстати, у тебя еще и выход за границу массива происходит, ты в курсе? |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 19:23 |