• 汇编的角度分析C语言的指针-02


    1.关于地址符&:&是地址符,类型是其后面的类型加一个“*”,任何变量都可以使用&来获取地址,但不能用在常量上。

    char a = 10;    
    short b = 20;    
    int c = 30;    
    
    //&a   &b   &c的类型
    //&a 是char* 类型       &b是short*类型     &c是int*类型

     

    2、关于变量类型的反汇编

    char a = 10;        
    short b = 20;        
    int c = 30;        
            
    char* pa = &a;        
    short* pb = &b;        
    int* pc = &c;        
            
    //&pa 是什么类型?  &pa是char**  类型的       
    //&pb 是什么类型?  &pb是short** 类型的     
    //&pc 是什么类型?  &pc是int**   类型的  
    int* px;        
            
    int** px2;        
            
    int*** px3;        
            
    int**** px4;        
            
    //*(px) 是什么类型?    int类型的    
            
    //*(px2) 是什么类型?   int*类型的    
            
    //*(px3) 是什么类型?   int** 类型的  
            
    //*(px4) 是什么类型?   int*** 类型的    
    char a = 10;        
    short b = 20;        
    int c = 30;        
            
    char* pa = (char*)&a;        
    short* pb = (short*)&b;        
    int* pc = (int*)&c;        
            
    简写为:        
    char* pa = &a;        
    short* pb = &b;        
    int* pc = &c;        

    观察分析如下代码的反汇编:

    char a = 10;            
    short b = 20;            
    int c = 30;            
                
    char* pa = &a;            
    short* pb = &b;            
    int* pc = &c;            
                
    char** ppa = (char**)&pa;            
    short** ppb = (short**)&pb;            
    int** ppc = (int**)&pc;            
                
    简写为:            
    char** ppa = &pa;            
    short** ppb = &pb;            
    int** ppc = &pc;            

    反汇编:

       总结: 带“*”号的宽度都是四个字节,存放的是地址去掉一个“*”的变量的地址

    3、观察如下代码的反汇编

    int x,y;    
    int* px;    
    int** px2;    
    int*** px3;    
        
    x = 10;    
    px = &x;    
    px2 = &px;    
    px3 = &px2;    
        
    y = *(*(*(px3)));    
        

    反汇编:

     总结:

      1、带“*”类型的变量,可以通过在其变量前加*来获取其指向内存中的存储值

      2、带“*”类型的变量前面加上*,类型是原来的类型减去一个*

  • 相关阅读:
    物流与仓库
    测试使用
    禅修的升级
    《引爆点 马尔科姆 格拉德威尔》读书笔记总结----《创业必读书第20本》--创业第三关做好业务:3,如何做好营销和增长第4本
    shell
    Vue中常用的方法记录
    前端工程化3-tapable
    Browser上传文件到华为云/七牛云 详细步骤
    immutable
    shell利用叮叮发送消息
  • 原文地址:https://www.cnblogs.com/heyhx/p/14229071.html
Copyright © 2020-2023  润新知