指针问题,往高手指导,最好是懂汇编的

来源:百度知道 编辑:UC知道 时间:2024/04/29 21:27:17
main()
{
int a;
int b;
printf("%d%d",a,b);
printf("%d%d",&a,&b);
}
我想知道的是,最后竟然输出ab的值是很大的一个数值,为什么会这个样子,是谁赋予他的那,是不是一声明变量就分配给空间的那?
1.声明指针的话给不给分配空间那?
2.如果说a的地址是20,那么b的地址是不是就是22了,这里的编译是不是按照顺序来分配空间的那?

声明变量不会分配空间,只有定义变量时才分配空间。这里的int a;int b;是暂时定义,如果在链接时系统全局空间没有相同名字的变量定义,则暂时定义“自动升级”为(正式的)定义,这时系统会为暂时定义的变量分配存储空间。

1、声明指针当然不分配空间,定义指针变量才分配空间
2、在常见的编译环境中,连续定义的变量会连续存放,而且是由高地址到低地址,所以b应该比a小,如果a是20,那么b的地址会小于20,再考虑到数据存放有对齐,int类型的对齐值是4,即int型数据要存放在能被4整队的地址,所以b会放在16。