【发布时间】:2019-11-08 22:08:41
【问题描述】:
我试图将一个指针分配给一个 int 数字的确切下一个内存地址,并给它这个数字的双倍值。但是我只能在 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;
}
谁能解释这两个下一个内存地址会发生什么?
【问题讨论】: