我试了一下,发现p &a和p &b的大小和老师的是相反的,a的地址不是应该比b的地址小一些吗?

来源:4-3 变量和指针的本质

lccundefined

2017-06-20 00:47

http://img.mukewang.com/5947ffc40001afb306500473.jpg

http://img.mukewang.com/5947ffc400018c9f06500473.jpg

如我截图所示

写回答 关注

4回答

  • 实时编程
    2020-11-24 18:40:10

    正常情况下 地址的分配简单的理解为 按 源代码  从上往下  没有问题 

    一般情况下 是这样 。 这里可能 编译器 如果优化 或许 会不一样  但是暂时 不考虑这个情况 

    但是 在你的代码里  这些 变量 是分配到 系统的栈内存 的  栈内存  跟操作系统内核 一样在高位

    就是  假设你是32位系统 系统内存 占用2g 内存 

    那么  你的地址   大概分配情况就行 

    0x  FF FF FF FF  这个是内存的 首地址 

    然后 往下一直是内核地址 

    直接到  2g内存结束 大概 位置为 1000 0000 0000 0000 0000 0000 0000 0000   就是 0x 80 00 00 00 

    然后栈内存的首地址  位置为 0111 1111 1111 1111 1111 1111 1111 1111 就是 0x 7F  FF FF FF

    从上 往下依次越来越小 

    所以你看到的确实是  内存地址的值 变小了  你测试的是对的

    但是你没有注意 课程里说的 从高地址开始分配



  • 慕UI5418499
    2018-02-25 10:37:46

    同问。a地址应该比b大才对吧

  • Hello_Word_
    2017-09-15 21:28:50


    从上往下分配


  • 慕粉0244178247
    2017-06-24 22:27:02

    地址的分配并不是一定按命名顺序的

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116478 学习 · 250 问题

查看课程

相似问题