• 【学习笔记】【C语言】变量的内存分析


    1. 字节和地址

    为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。

    1> 内存以“字节为单位”

    clip_image002

    0x表示的是十六进制,不用过于纠结,能看懂这些数字之间谁大谁小就行了

    2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

    2. 变量的存储

    1> 所占用字节数跟类型有关,也跟编译器环境有关

    clip_image004

    2> 变量实例

    int b = 10;

    int a = 20;

    内存由大到小寻址,优先分配内存地址较大的字节给变量。b的内存地址比a大

    每个变量都有地址:第一个字节的地址就是变量的地址

    QQ图片20150531192013

    3> 查看内存地址:

    int a;

    printf("a的地址是:%p ", &a);

    4> 注意

    在变量未经初始化之前,不要尝试使用变量的值

    int a;

    printf("a的值是:%d ", a);

    上面的写法是不建议的

    3.课程代码

     1 #include <stdio.h>
     2 
     3 
     4 // 1.内存寻址由大到小,优先分配内存地址比较大的字节给变量 
     5   
     6 // 2.变量越先定义,内存地址就越大 
     7   
     8 //3.取得变量的地址:&变量名 
     9   
    10 // 4.输出地址:%p 
    11   
    12 //5.一个变量一定先进行初始化,才能使用 
    13  
    14 
    15 int main() 
    16 { 
    17     // 内存寻址由大到小 
    18     int a = 10; 
    19     
    20     int b = 20; 
    21     
    22     int c; 
    23     
    24     // &是一个地址运算符,取得变量的地址 
    25     // %p用来输出地址 
    26     // 0x7fff56f09bc8 
    27     printf("a的地址是:%p
    ", &a); 
    28     // 0x7fff56f09bc4 
    29     printf("b的地址是:%p
    ", &b); 
    30     // 0x7fff56f09bc0 
    31     printf("c的地址是:%p
    ", &c); 
    32     
    33     //由于变量c没有经过初始化,所以直接拿来使用是不对的 
    34     //int d = c  + 1; 
    35     
    36     
    37     printf("c的值是%d
    ", c); 
    38     
    39     return 0;
    40 
    41 }
  • 相关阅读:
    sqlmap注入分类
    sqlmap简单中文说明
    【Python Learning第一篇】Linux命令学习及Vim命令的使用
    模拟退火算法从原理到实战【基础篇】
    平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
    使用VMWareWorkstation10搭建学习环境笔记
    洛谷P1313 计算系数【快速幂+dp】
    浅析Numpy.genfromtxt及File I/O讲解
    持续交付中高效率与高质量
    持续集成CI与自动化测试
  • 原文地址:https://www.cnblogs.com/dssf/p/4542509.html
Copyright © 2020-2023  润新知