zoukankan      html  css  js  c++  java
  • 【学习笔记】【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 }
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/dssf/p/4542509.html
Copyright © 2011-2022 走看看