黑马程序员技术交流社区

标题: 为什么在C语言中定义变量越早,所分配的内存地址越高? [打印本页]

作者: CesC    时间: 2015-7-22 23:10
标题: 为什么在C语言中定义变量越早,所分配的内存地址越高?
#include <stdio.h>
int main(void)
{
    int a1, a2, a3;

    printf("variable address:\n");
    printf("&a1 = %p\n",&a1);
    printf("&a2 = %p\n",&a2);
    printf("&a3 = %p\n",&a3);
}


谁能详细解释一下C语言中先定义的变量所分配的地址越高的原理,谢谢了!

作者: lixiaopeng    时间: 2015-7-22 23:50
记住这个结论,内存寻址由大到小,优先分配内存地址比较大的字节。http://blog.csdn.net/lxp1245121592/article/details/46892923
作者: 562413895@qq.co    时间: 2015-7-23 08:22
这个是C语言内存机制决定的吧
作者: 后街男孩    时间: 2015-7-23 13:02
定义的局部变量保存在栈里 ,栈底的地址高,所以先定义的局部变量先保存在栈底,地址就越大
作者: 丁铭检    时间: 2015-7-23 20:47
你可一用堆栈去理解。。也就是先进后出。。
作者: 午夜码农    时间: 2015-7-23 20:49
大哥这是内存机制,当初人家就认为这么设计最合理,就这么弄了。。
作者: 爱生活爱程序    时间: 2015-7-24 08:39
定义的变量放到内存的栈区,栈是先进后出,同时栈低的地址最大,所以先定义的变量压到栈底,地址最大
作者: 三月小雨    时间: 2015-7-24 16:52
内存的使用机制就是由高地址到低地址,而且这样也符合先进后出的使用流程
作者: wy911011    时间: 2015-7-24 20:06
你是没看基础视频么,
作者: aludiba    时间: 2015-7-24 21:32
楼上正解
设计师这样设计的

作者: qq103613    时间: 2015-7-24 21:36
个人觉得这个问题没必要深究  先定义先分配内存,知道就好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2