Обьяснить каждую строку выводящуюся на экран
Алла Борисова
Для следующего фрагмента программы записать в виде таблицы значение переменных после каждого шага программы (столбцы соответствуют переменным, строки – строкам программы). Тип int и указатели занимают по 4 байта. Компилятор расположил переменные по следующим адресам: a – 100, p1 – 120, p2 – 124, s.x – 128, s.y – 132.
Structstr {int x; inty;};
Inta[5] = {1, 2, 3, 4, 5};
int *p1, *p2;
str s;
p1 = &a[1%5+1];
p2 = a+1/5+1;
s.x = *p1;
s.y = *p2++;
*(p1-2)=s.y;
p2=&s;
p2->x=p1[1];
p2–>y=s.y;
a[5]=s.x
#include "stdio.h"

#include "math.h"
main()
{
struct str {int x; int y};
int *p1, *p2, *p;
struct str s;
int a[5]={1,2,3,4,5};

printf("p1=%p\n", p1);

printf("p2=%p\n",p2);

printf ("Start\n");

p1=&a[1%5+1];
printf("p1=%p *p2=%i\n", p2, *p2);

p=&s.x;
s.x=*p1;
printf("s.x=%i &s.x=%p\n", s.x, p);

s.y=*p2++;
printf ("s.y=%i *p2++=%i\n", s.y, *p2++);

printf ("1st *(p1-2)=%i", *(p1-2));

*(p1-2)=s.y;
printf(" 2nd *(p1-2)=%i\n", *(p1-2));

p2=&s;
printf ("p2=%p\n", p2);

((struct str*)p2)->x=p1[1];
printf ("p2->x=%i\n", ((struct str*)p2)->x);

((struct str*)p2)->y=s.y;
printf("p2->y=%i\n", ((struct str*)p2)->y);

a[5]=s.x;
printf ("a[5]=%i\n", a[5]); }
Алла Борисова около 1 года назадСпасибо 0
0 чел.