C语言day02-11变量内存分析

pragma mark – 变量内存分析

/**
  1. 字节和地址
     内存就是字节,内存以“字节为单位”
  2. 变量的存储 占据的存储空间
    一个变量所占用的存储空间,不仅跟变量类型有关,而且还跟编译器环境有关。同一种类型的变量,在不同编译器环境下所占用的存储空间又是不一样的
    * 所占用字节数跟类型有关,也跟编译器环境有关
    * 内存由大到下寻址
    * 变量存储单元的第一个字节的地址就是该变量的地址
    * 任何变量在内存中都是以二进制的形式存储。一个负数的二进制形式,其实就是对它的正数的二进制形式进行取反后再+1(取反的意思就是0变1,1变0)
            编译器
    类型    16位  32位  64位(只关注64 因为是Mac都是64位的)
    char    1     1     1
    int     2     4     4
   float    4     4     4
  double    8     8     8
   short    2     2     2
    long    2     2     2
 long long  2     2     2
    void*   2     4     8

 
 */

pragma – mark -代码

#import <Foundation/Foundation.h>

int main()
{
    // 内存寻址从大到小 , 如果按照这种规则,那么先定义的变量内存地址一定大于后定义的变量
    /**
     *  比如当前地址有 0ffc1~0ffc16
     */
    int number = 0; // 0ffc13~0ff16
    int value = 0;  // 0ffc9~0ff12
    
    // 如何获得变量的详细地址(变量地址),&变量名称
    //  利用%p展位符来打印变量的详细地址
    // 输出的是一个十六进制的数
    //      a/b/c/d/f/j
    //      10/11/12/13/14/15
            // 10/11/12/13/14/15
    printf("%p\n",&number);// 先定义的 内存地址越大
    printf("%p\n",&value);
    

    return 0;
}
    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/7edf70d5c18b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞