编译好之后。不区分类型的,那个*p占了4个连续的字节。。。系统先在堆或者栈中分配好4个连续字节之后,才把那个地址赋给p的,不是由p决定的。
int *p = 3;这种写法在c语言中式简化写法,lz学了编译原理就知道了,这句话还是拆成两句,先在栈中分配了四个字节保存3,然后才把第一个字节的地址赋给p的。。。
虚拟内存上的布局是由编译器决定的,和操作系统无关。。。
比如说这个
void f(){
int *p = 4;
}
内存实际上是这样的
3 地址2--->就是p(这里占了4个字节)
2 整数4(这里占了4个字节)
1 返回地址之类的信息(这里的大小和编译器有关)
至于实际内存地址,LZ不用纠结了。这个和操作系统有关。