#include <stdio.h>
#include <stdlib.h>
int main()
{
// Объявление переменных
char *p, c = 0;
int *a, b = 0;
float *x, y = 3.5f;
double *m, n = 0.0;
// Для безопасной работы с m += 2
double arr[3] = {0.0, 0.0, 0.0};
m = arr; // теперь m указывает на массив из 3 double
// === Вывод адресов и размеров ВСЕХ переменных (включая указатели) ===
printf("=== Addresses and sizes ===\n"); printf("p: addr=%p, size=%zu\n", (void*)&p
, sizeof(p
)); printf("c: addr=%p, size=%zu\n", (void*)&c
, sizeof(c
)); printf("a: addr=%p, size=%zu\n", (void*)&a
, sizeof(a
)); printf("b: addr=%p, size=%zu\n", (void*)&b
, sizeof(b
)); printf("x: addr=%p, size=%zu\n", (void*)&x
, sizeof(x
)); printf("y: addr=%p, size=%zu\n", (void*)&y
, sizeof(y
)); printf("m: addr=%p, size=%zu\n", (void*)&m
, sizeof(m
)); printf("n: addr=%p, size=%zu\n", (void*)&n
, sizeof(n
)); printf("arr:addr=%p, size=%zu (total array)\n", (void*)arr
, sizeof(arr
));
a = &b;
// === ТОЧКА ОСТАНОВА: для отладчика поставьте breakpoint здесь ===
// В коде — просто комментарий, или используйте getchar() в DEBUG-режиме
// getchar(); // раскомментируйте, если нужна пауза
// Исправлено: scanf, а не scan
if (scanf("%d", a
) != 1) { return 1;
}
printf("a=%p\t*a=%d\tb=%d\n", (void*)a
, *a
, b
);
// Исправлено: явное приведение int* → char*
p = (char*)a;
c = *p;
*p = *(p + 3);
*(p + 3) = c;
printf("p=%p\tc=%d\ta=%p\tb=%d\n", (void*)p
, (int)c
, (void*)a
, b
);
x = &y;
printf("x=%p\t*x=%f\ty=%f\n", (void*)x
, *x
, y
);
// Исправлено: явное приведение float* → int* (предупреждение уйдёт, но strict aliasing violation остаётся — в учебных целях допустимо)
a = (int*)x;
*a = (int)(*x); // преобразуем значение, а не читаем как int напрямую (менее опасно)
// Альтернатива (более корректно): *a = (int)(*x);
printf("a=%p\t*a=%d\tx=%p\t*x=%f\ty=%f\n", (void*)a
, *a
, (void*)x
, *x
, y
);
a = &b;
y = 12345.6789f; // исправлено: точка, а не запятая; суффикс f для float
printf("x=%p\t*x=%f\ty=%f\n", (void*)x
, *x
, y
);
p = (char*)x; // явное приведение
c = *p;
*p = *(p + 3);
*(p + 3) = c;
printf("p=%p\tc=%d\tx=%p\ty=%f\n", (void*)p
, (int)c
, (void*)x
, y
);
// Теперь m указывает на arr[0]
printf("m=%p\t*m=%f\tn=%f (note: n is separate, not used here)\n", (void*)m
, *m
, n
); // Но по смыслу, вероятно, хотели m = &n — однако тогда m += 2 опасно.
// Оставим m → arr, а отдельно выведем n
n = 5.5;
printf("n (direct) = %f\n", n
); // Выводим состояние arr[0], где сейчас m указывает
b = (int)1.7; // n = y = 1.7 → но b — int, поэтому присваиваем явно
y = 1.7f;
n = 1.7;
printf("b=%d\ty=%f\tn=%f\n", b
, y
, n
);
printf("*a=%d\t*x=%f\t*m=%f\n", *a
, *x
, *m
);
m += 2; // теперь указывает на arr[2] — безопасно, т.к. arr[3]
printf("n=%f\tn_addr=%p\tm=%p\n", n
, (void*)&n
, (void*)m
);
// Теперь *m — это arr[2], безопасно
*m = (double)((float)(*a) - n + (double)((int)(*x)));
printf("m=%p\t*m=%f\n", (void*)m
, *m
);
// === Вывод значений всех переменных в конце ===
printf("\n=== Final values ===\n"); printf("c = %d ('%c')\n", (int)c
, (c
>= 32 && c
<= 126) ? c
: '?'); printf("arr[0] = %f, arr[1] = %f, arr[2] = %f\n", arr
[0], arr
[1], arr
[2]);
return 0; // исправлено: return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBtYWluKCkKewogICAgLy8g0J7QsdGK0Y/QstC70LXQvdC40LUg0L/QtdGA0LXQvNC10L3QvdGL0YUKICAgIGNoYXIgKnAsIGMgPSAwOwogICAgaW50ICphLCBiID0gMDsKICAgIGZsb2F0ICp4LCB5ID0gMy41ZjsKICAgIGRvdWJsZSAqbSwgbiA9IDAuMDsKCiAgICAvLyDQlNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0Lkg0YDQsNCx0L7RgtGLINGBIG0gKz0gMgogICAgZG91YmxlIGFyclszXSA9IHswLjAsIDAuMCwgMC4wfTsKICAgIG0gPSBhcnI7ICAvLyDRgtC10L/QtdGA0YwgbSDRg9C60LDQt9GL0LLQsNC10YIg0L3QsCDQvNCw0YHRgdC40LIg0LjQtyAzIGRvdWJsZQoKICAgIC8vID09PSDQktGL0LLQvtC0INCw0LTRgNC10YHQvtCyINC4INGA0LDQt9C80LXRgNC+0LIg0JLQodCV0KUg0L/QtdGA0LXQvNC10L3QvdGL0YUgKNCy0LrQu9GO0YfQsNGPINGD0LrQsNC30LDRgtC10LvQuCkgPT09CiAgICBwcmludGYoIj09PSBBZGRyZXNzZXMgYW5kIHNpemVzID09PVxuIik7CiAgICBwcmludGYoInA6ICBhZGRyPSVwLCBzaXplPSV6dVxuIiwgKHZvaWQqKSZwLCAgc2l6ZW9mKHApKTsKICAgIHByaW50ZigiYzogIGFkZHI9JXAsIHNpemU9JXp1XG4iLCAodm9pZCopJmMsICBzaXplb2YoYykpOwogICAgcHJpbnRmKCJhOiAgYWRkcj0lcCwgc2l6ZT0lenVcbiIsICh2b2lkKikmYSwgIHNpemVvZihhKSk7CiAgICBwcmludGYoImI6ICBhZGRyPSVwLCBzaXplPSV6dVxuIiwgKHZvaWQqKSZiLCAgc2l6ZW9mKGIpKTsKICAgIHByaW50ZigieDogIGFkZHI9JXAsIHNpemU9JXp1XG4iLCAodm9pZCopJngsICBzaXplb2YoeCkpOwogICAgcHJpbnRmKCJ5OiAgYWRkcj0lcCwgc2l6ZT0lenVcbiIsICh2b2lkKikmeSwgIHNpemVvZih5KSk7CiAgICBwcmludGYoIm06ICBhZGRyPSVwLCBzaXplPSV6dVxuIiwgKHZvaWQqKSZtLCAgc2l6ZW9mKG0pKTsKICAgIHByaW50ZigibjogIGFkZHI9JXAsIHNpemU9JXp1XG4iLCAodm9pZCopJm4sICBzaXplb2YobikpOwogICAgcHJpbnRmKCJhcnI6YWRkcj0lcCwgc2l6ZT0lenUgKHRvdGFsIGFycmF5KVxuIiwgKHZvaWQqKWFyciwgc2l6ZW9mKGFycikpOwogICAgcHJpbnRmKCJcbiIpOwoKICAgIGEgPSAmYjsKICAgIHByaW50ZigiICBFbnRlciBiID0gIik7CiAgICAvLyA9PT0g0KLQntCn0JrQkCDQntCh0KLQkNCd0J7QktCQOiDQtNC70Y8g0L7RgtC70LDQtNGH0LjQutCwINC/0L7RgdGC0LDQstGM0YLQtSBicmVha3BvaW50INC30LTQtdGB0YwgPT09CiAgICAvLyDQkiDQutC+0LTQtSDigJQg0L/RgNC+0YHRgtC+INC60L7QvNC80LXQvdGC0LDRgNC40LksINC40LvQuCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1IGdldGNoYXIoKSDQsiBERUJVRy3RgNC10LbQuNC80LUKICAgIC8vIGdldGNoYXIoKTsgIC8vINGA0LDRgdC60L7QvNC80LXQvdGC0LjRgNGD0LnRgtC1LCDQtdGB0LvQuCDQvdGD0LbQvdCwINC/0LDRg9C30LAKCiAgICAvLyDQmNGB0L/RgNCw0LLQu9C10L3Qvjogc2NhbmYsINCwINC90LUgc2NhbgogICAgaWYgKHNjYW5mKCIlZCIsIGEpICE9IDEpIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGVycm9yIVxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcHJpbnRmKCJhPSVwXHQqYT0lZFx0Yj0lZFxuIiwgKHZvaWQqKWEsICphLCBiKTsKCiAgICAvLyDQmNGB0L/RgNCw0LLQu9C10L3Qvjog0Y/QstC90L7QtSDQv9GA0LjQstC10LTQtdC90LjQtSBpbnQqIOKGkiBjaGFyKgogICAgcCA9IChjaGFyKilhOwogICAgYyA9ICpwOwogICAgKnAgPSAqKHAgKyAzKTsKICAgICoocCArIDMpID0gYzsKICAgIHByaW50ZigicD0lcFx0Yz0lZFx0YT0lcFx0Yj0lZFxuIiwgKHZvaWQqKXAsIChpbnQpYywgKHZvaWQqKWEsIGIpOwoKICAgIHggPSAmeTsKICAgIHByaW50ZigieD0lcFx0Kng9JWZcdHk9JWZcbiIsICh2b2lkKil4LCAqeCwgeSk7CgogICAgLy8g0JjRgdC/0YDQsNCy0LvQtdC90L46INGP0LLQvdC+0LUg0L/RgNC40LLQtdC00LXQvdC40LUgZmxvYXQqIOKGkiBpbnQqICjQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INGD0LnQtNGR0YIsINC90L4gc3RyaWN0IGFsaWFzaW5nIHZpb2xhdGlvbiDQvtGB0YLQsNGR0YLRgdGPIOKAlCDQsiDRg9GH0LXQsdC90YvRhSDRhtC10LvRj9GFINC00L7Qv9GD0YHRgtC40LzQvikKICAgIGEgPSAoaW50Kil4OwogICAgKmEgPSAoaW50KSgqeCk7ICAvLyDQv9GA0LXQvtCx0YDQsNC30YPQtdC8INC30L3QsNGH0LXQvdC40LUsINCwINC90LUg0YfQuNGC0LDQtdC8INC60LDQuiBpbnQg0L3QsNC/0YDRj9C80YPRjiAo0LzQtdC90LXQtSDQvtC/0LDRgdC90L4pCiAgICAvLyDQkNC70YzRgtC10YDQvdCw0YLQuNCy0LAgKNCx0L7Qu9C10LUg0LrQvtGA0YDQtdC60YLQvdC+KTogKmEgPSAoaW50KSgqeCk7CiAgICBwcmludGYoImE9JXBcdCphPSVkXHR4PSVwXHQqeD0lZlx0eT0lZlxuIiwgKHZvaWQqKWEsICphLCAodm9pZCopeCwgKngsIHkpOwoKICAgIGEgPSAmYjsKICAgIHkgPSAxMjM0NS42Nzg5ZjsgIC8vINC40YHQv9GA0LDQstC70LXQvdC+OiDRgtC+0YfQutCwLCDQsCDQvdC1INC30LDQv9GP0YLQsNGPOyDRgdGD0YTRhNC40LrRgSBmINC00LvRjyBmbG9hdAogICAgcHJpbnRmKCJ4PSVwXHQqeD0lZlx0eT0lZlxuIiwgKHZvaWQqKXgsICp4LCB5KTsKCiAgICBwID0gKGNoYXIqKXg7ICAvLyDRj9Cy0L3QvtC1INC/0YDQuNCy0LXQtNC10L3QuNC1CiAgICBjID0gKnA7CiAgICAqcCA9ICoocCArIDMpOwogICAgKihwICsgMykgPSBjOwogICAgcHJpbnRmKCJwPSVwXHRjPSVkXHR4PSVwXHR5PSVmXG4iLCAodm9pZCopcCwgKGludCljLCAodm9pZCopeCwgeSk7CgogICAgLy8g0KLQtdC/0LXRgNGMIG0g0YPQutCw0LfRi9Cy0LDQtdGCINC90LAgYXJyWzBdCiAgICBwcmludGYoIm09JXBcdCptPSVmXHRuPSVmIChub3RlOiBuIGlzIHNlcGFyYXRlLCBub3QgdXNlZCBoZXJlKVxuIiwgKHZvaWQqKW0sICptLCBuKTsKICAgIC8vINCd0L4g0L/QviDRgdC80YvRgdC70YMsINCy0LXRgNC+0Y/RgtC90L4sINGF0L7RgtC10LvQuCBtID0gJm4g4oCUINC+0LTQvdCw0LrQviDRgtC+0LPQtNCwIG0gKz0gMiDQvtC/0LDRgdC90L4uCiAgICAvLyDQntGB0YLQsNCy0LjQvCBtIOKGkiBhcnIsINCwINC+0YLQtNC10LvRjNC90L4g0LLRi9Cy0LXQtNC10LwgbgoKICAgIG4gPSA1LjU7CiAgICBwcmludGYoIm4gKGRpcmVjdCkgPSAlZlxuIiwgbik7CiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC+0YHRgtC+0Y/QvdC40LUgYXJyWzBdLCDQs9C00LUg0YHQtdC50YfQsNGBIG0g0YPQutCw0LfRi9Cy0LDQtdGCCiAgICBwcmludGYoIm0tPmFyclswXT0lZlxuIiwgKm0pOwoKICAgIGIgPSAoaW50KTEuNzsgICAvLyBuID0geSA9IDEuNyDihpIg0L3QviBiIOKAlCBpbnQsINC/0L7RjdGC0L7QvNGDINC/0YDQuNGB0LLQsNC40LLQsNC10Lwg0Y/QstC90L4KICAgIHkgPSAxLjdmOwogICAgbiA9IDEuNzsKICAgIHByaW50ZigiYj0lZFx0eT0lZlx0bj0lZlxuIiwgYiwgeSwgbik7CgogICAgcHJpbnRmKCIqYT0lZFx0Kng9JWZcdCptPSVmXG4iLCAqYSwgKngsICptKTsKCiAgICBtICs9IDI7ICAvLyDRgtC10L/QtdGA0Ywg0YPQutCw0LfRi9Cy0LDQtdGCINC90LAgYXJyWzJdIOKAlCDQsdC10LfQvtC/0LDRgdC90L4sINGCLtC6LiBhcnJbM10KICAgIHByaW50Zigibj0lZlx0bl9hZGRyPSVwXHRtPSVwXG4iLCBuLCAodm9pZCopJm4sICh2b2lkKiltKTsKCiAgICAvLyDQotC10L/QtdGA0YwgKm0g4oCUINGN0YLQviBhcnJbMl0sINCx0LXQt9C+0L/QsNGB0L3QvgogICAgKm0gPSAoZG91YmxlKSgoZmxvYXQpKCphKSAtIG4gKyAoZG91YmxlKSgoaW50KSgqeCkpKTsKICAgIHByaW50ZigibT0lcFx0Km09JWZcbiIsICh2b2lkKiltLCAqbSk7CgogICAgLy8gPT09INCS0YvQstC+0LQg0LfQvdCw0YfQtdC90LjQuSDQstGB0LXRhSDQv9C10YDQtdC80LXQvdC90YvRhSDQsiDQutC+0L3RhtC1ID09PQogICAgcHJpbnRmKCJcbj09PSBGaW5hbCB2YWx1ZXMgPT09XG4iKTsKICAgIHByaW50ZigicCA9ICVwXG4iLCAodm9pZCopcCk7CiAgICBwcmludGYoImMgPSAlZCAoJyVjJylcbiIsIChpbnQpYywgKGMgPj0gMzIgJiYgYyA8PSAxMjYpID8gYyA6ICc/Jyk7CiAgICBwcmludGYoImEgPSAlcFxuIiwgKHZvaWQqKWEpOwogICAgcHJpbnRmKCJiID0gJWRcbiIsIGIpOwogICAgcHJpbnRmKCJ4ID0gJXBcbiIsICh2b2lkKil4KTsKICAgIHByaW50ZigieSA9ICVmXG4iLCB5KTsKICAgIHByaW50ZigibSA9ICVwXG4iLCAodm9pZCopbSk7CiAgICBwcmludGYoIm4gPSAlZlxuIiwgbik7CiAgICBwcmludGYoImFyclswXSA9ICVmLCBhcnJbMV0gPSAlZiwgYXJyWzJdID0gJWZcbiIsIGFyclswXSwgYXJyWzFdLCBhcnJbMl0pOwoKICAgIHJldHVybiAwOyAgLy8g0LjRgdC/0YDQsNCy0LvQtdC90L46IHJldHVybiAwOwp9