A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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语言中先定义的变量所分配的地址越高的原理,谢谢了!

10 个回复

倒序浏览
记住这个结论,内存寻址由大到小,优先分配内存地址比较大的字节。http://blog.csdn.net/lxp1245121592/article/details/46892923
回复 使用道具 举报
这个是C语言内存机制决定的吧
回复 使用道具 举报
定义的局部变量保存在栈里 ,栈底的地址高,所以先定义的局部变量先保存在栈底,地址就越大
回复 使用道具 举报
你可一用堆栈去理解。。也就是先进后出。。
回复 使用道具 举报
大哥这是内存机制,当初人家就认为这么设计最合理,就这么弄了。。
回复 使用道具 举报
定义的变量放到内存的栈区,栈是先进后出,同时栈低的地址最大,所以先定义的变量压到栈底,地址最大
回复 使用道具 举报
内存的使用机制就是由高地址到低地址,而且这样也符合先进后出的使用流程
回复 使用道具 举报
你是没看基础视频么,
回复 使用道具 举报
楼上正解
设计师这样设计的
回复 使用道具 举报
个人觉得这个问题没必要深究  先定义先分配内存,知道就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马