Указатели и адресная арифметика - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите с заданием Язык C. Задание звучит так: 2) Для этого фрагмента программы написать значения каждой переменной после каждого шага. Адреса переменных: a – 100, p1 – 120, p2 – 124, s.x – 128, s.y – 132. N=10 в данном случае. struct str {int x; int y;}; int a[5] = {1, 2, 3, 4, 5}; int *p1, *p2; str s; p1 = &a[N%5+1]; //строка 1 p2 = a+N/5+1; //строка 2 s.x = *p1; // строка 3 s.y = *p2++; //строка 4 *(p1-2)=s.y; //строка 5 p2=&s; //строка 6 p2->x=p1[1]; //строка 7 p2–>y=s.y; //строка 8 a[5]=s.x; //строка 9

Решение задачи: «Указатели и адресная арифметика»

textual
Листинг программы
p1 = &a[N%5+1]; // p1=104
p2 = a+N/5+1; // p2=112
s.x = *p1; // s.x=2
s.y = *p2++; // s.y=4, p2=116
*(p1--)=s.y; // a[0]=4, p1=100
p2=&s; // p2=128
p2->x=p1[1]; // s.x= 2
p2–>y=s.y; //s.y=4
a[5]=s.x; // a[5]=2

Объяснение кода листинга программы

В данном коде выполняются следующие действия:

  1. Инициализируется указатель p1 на элемент массива a с индексом, вычисляемым как N % 5 + 1, то есть на один элемент вперед относительно остатка от деления N на 5. Значение p1 при этом будет равно 104.
  2. Инициализируется указатель p2 на элемент массива a, смещенный вперед относительно N/5+1. Значение p2 при этом будет равно 112.
  3. Значение указателя p1 присваивается элементу s.x. Таким образом, s.x становится равным 2.
  4. Значение указателя p2 присваивается элементу s.y, после чего указатель p2 инкрементируется. В результате s.y становится равным 4, а p2 становится равным 116.
  5. Значение указателя p1 уменьшается на единицу, после чего значение p1 присваивается элементу массива a с индексом 0. Таким образом, a[0] становится равным 4, а p1 становится равным 100.
  6. Инициализируется указатель p2 на структуру s. Значение p2 при этом будет равно 128.
  7. Значение указателя p2 используется для доступа к полю x структуры s, которое становится равным значению указателя p1 (которое равно 104), то есть s.x становится равным 2.
  8. Значение указателя p2 используется для доступа к полю y структуры s, после чего указатель p2 уменьшается на единицу. В результате s.y становится равным 4, а p2 становится равным 116.
  9. Значение поля s.y присваивается элементу массива a с индексом 5. Таким образом, a[5] становится равным 4.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы