【发布时间】:2012-10-22 07:38:31
【问题描述】:
我有几个疑问,我记得有些地方我无法手动将变量放在内存中的特定位置,但后来我遇到了这段代码
#include<stdio.h>
void main()
{
int *x;
x=0x200;
printf("Number is %lu",x); // Checkpoint1
scanf("%d",x);
printf("%d",*x);
}
是我们不能把它放在一个特定的位置,还是我们不应该把它放在一个特定的位置,因为我们不知道它是否是一个有效的位置?
另外,在这段代码中,直到第一个检查点,我得到的输出是 512。 然后在那段故障之后。
有人能解释为什么吗? 0x200 不是有效的内存位置吗?
【问题讨论】:
-
正如所写,这甚至不是有效的 C。整数不会隐式转换为指针;你需要一个演员表。但更根本的是,你不能仅仅假设一个随机地址对应于你可以存储东西的内存。