• 指针


    今早起来脑子不清醒,在一个指针问题上犯了迷糊,影响了我一大早的心情。

    写一些结论:

    1.指针也是变量,特殊之处在于指针变量存放的是地址,这个地址就是别的变量的地址。也就是说指针指向一个变量

    2.指针(1)的指针(2)也是变量,(2)特殊之处在于存放的是指针(1)的地址。这个地址就是指针(1)的地址。也就是说一个指针指向另一个指针。

    3.指针的赋值操作。

    同级别的赋值:

        int aa=1;
        int bb=2;
    
        int *a1=&aa;  //a1存放aa的地址
        int *a2=&bb;  //a2存在bb的地址
        int *a3=a1;   //a1的内容赋值给a3,即a3存放aa的地址
    
        qDebug()<<"a1"<<a1;  //aa的地址
        qDebug()<<"a2"<<a2;  //bb的地址
        qDebug()<<"a3"<<a3;  //aa的地址
    
        qDebug()<<"*a1"<<*a1;  //aa
        qDebug()<<"*a2"<<*a2;  //bb
        qDebug()<<"*a3"<<*a3;  //aa
    
        a1=a2;                  //a1存放a2内的地址
    
        qDebug()<<"a1"<<a1;    //bb的地址
        qDebug()<<"a2"<<a2;    //bb的地址
        qDebug()<<"a3"<<a3;    //aa的地址
    
    
        qDebug()<<"*a1"<<*a1;  //bb
        qDebug()<<"*a2"<<*a2;  //bb
        qDebug()<<"*a3"<<*a3;  //aa

    运行结果:

    a1 0x73fcbc
    a2 0x73fcb8
    a3 0x73fcbc
    *a1 1
    *a2 2
    *a3 1
    a1 0x73fcb8
    a2 0x73fcb8
    a3 0x73fcbc
    *a1 2
    *a2 2
    *a3 1

    不同级别的赋值:

        int aa=1;
        int bb=2;
    
        int *a1=&aa;  //a1存放aa的地址
        int *a2=&bb;  //a2存放bb的地址
        int **a3=&a1; //a3存放a1的地址
    
        qDebug()<<"a1"<<a1;  //输出aa的地址
        qDebug()<<"a2"<<a2;  //输出bb的地址
        qDebug()<<"a3"<<*a3; //输出aa的地址
    
        qDebug()<<"*a1"<<*a1;  //aa
        qDebug()<<"*a2"<<*a2;  //bb
        qDebug()<<"*a3"<<**a3; //aa
    
        a1=a2;                  //a1存放a2内的地址
    
        qDebug()<<"a1"<<a1;     //输出bb的地址
        qDebug()<<"a2"<<a2;     //输出bb的地址
        qDebug()<<"a3"<<*a3;    //由于a3存放的是a1的地址,a1内又变为bb的地址,所以输出bb的地址
    
        qDebug()<<"*a1"<<*a1;  //输出bb
        qDebug()<<"*a2"<<*a2;  //输出bb
        qDebug()<<"*a3"<<**a3;  //输出bb

    输出结果:

    a1 0x73fcc0
    a2 0x73fcbc
    a3 0x73fcc0
    *a1 1
    *a2 2
    *a3 1
    a1 0x73fcbc
    a2 0x73fcbc
    a3 0x73fcbc
    *a1 2
    *a2 2
    *a3 2
  • 相关阅读:
    内嵌汇编简介(转)
    binary hacks读数笔记(dlopen、dlsym、dlerror、dlclose)
    在Ubuntu 20.04 LTS Focal Fossa上安装Fail2ban
    如何在CentOS 8上安装和配置Fail2ban
    Linux中使用Head命令的7种方法
    如何在CentOS / RHEL上安装Nginx
    如何在Fedora 32/31/30上安装NVM?
    如何在Ubuntu 20.04 LTS Focal Fossa上安装WildFly?
    如何在CentOS 8上安装oVirt虚拟机管理器
    如何在CentOS 8上安装CentOS Web面板?
  • 原文地址:https://www.cnblogs.com/sggggr/p/12856212.html
Copyright © 2020-2023  润新知