Я пытаюсь назначить указатель на точный следующий адрес памяти целого числа и дать ему удвоенное значение числа. Однако я могу писать только после 3 (* 4, что является размером int) или более адресов памяти, иначе он ничего не печатает.
Это работает
#include <stdio.h>
int main(){
int x, *ptr, memory_jump = 3;
scanf("%d",&x);
ptr = &x+memory_jump;
*ptr = x * 2;
printf("Given int = %d, Address = %d \nNext address content = %d,Next address pos = %d",x,&x,*ptr,ptr);
return 0;
}
Если я уменьшу памятьпри переходе к 2 или 1 он вообще ничего не печатает, поэтому возникает ошибка.
int main(){
int x, *ptr, memory_jump = 2;
scanf("%d",&x);
ptr = &x+memory_jump;
*ptr = x * 2;
printf("%d", (ptr-2));
printf("Given int = %d, Address = %d \nNext address content = %d,Next address pos = %d",x,&x,*ptr,ptr);
return 0;
}
Может кто-нибудь объяснить, что происходит с этими двумя следующими адресами памяти?