• C、指针基础2


    8、不同的指针指向:

                  指针的类型决定了指针的操作原则,short*指针 一次操作2字节空间,char*指针一次操作1字节空间,int*指针一次操作4字节空间,float*一次操作4字节空间,double*针一次操作8字节空间。。。。。。并且浮点数储存与整型储存是不一样的,int*与float*也是完全不一样的。

    int a=12;

    char *pc=&a;              *p=2,只操作1字节首字节。

    longlong *pll=&a;       *pll=34,操作8字节,4字节越界。

    float *pf=&a;               读出的*pf与12无关系。

    9、二级指针

    int =12;                a变量有自己的空间,假设地址是0x10,里面装的是12.

    int*=&a;               p变量有自己的空间,假设地址是0x20,里面装的是0x10.

    int**pp=&p;          pp也有自己的空间,假设地址是0x30,里面装的是0x20.

    注意:

    pp就是二级指针变量,用来装一级指针变量的地址。

    int**就是二级指针类型,int*是一级指针类型。

    同理:int***是三级指针,装二级指针的地址,&pp。

               int****是四级指针,装三级指针的地址。

    二级指针的使用:

           计算规则:*+空间的地址 就是该 空间名字。

                             *+变量的地址 就是该 变量本身。

    p==&a

    *p==*&a==a

    pp==&p

    *pp==*&p==p

    **pp==*p==a

    可得:**pp与a等值。

                读:printf **  pp,输出12

                写:**pp=34,原12被覆盖,a也是34.

                取地址:&**pp==&a 得到该空间的地址。

    10、指针数组:

    int a[10];  每个元素都是int类型数据。

    int* c[10]; 每个元素都是int*类型的,即地址。

              指针数组,也叫地址数组。

    int d=1,e=2,f=3

    int*c[5]={&d,&e,&f};

    使用:

              c[1]就是&e

              *c[1]==*&e==e

    *c[1]的用法与e相同。

             读:printf   *c[1],输出2.

             写:*c[1]=34,原2被覆盖,e=34。

             取地址:&*c[1]=&e,得到该空间的地址。

  • 相关阅读:
    GBase 8c分布式核心技术—在线扩容
    ros2与windows入门教程-控制小乌龟
    springboot基于微信小程序的宿舍管理系统毕业设计源码
    2.1.1 面向对象:类和对象概念
    C++ QT QSerialPort基操
    Python-OpenCV API
    ORACLE连接不上 Linux网络 端口 问题判断
    C++——vector(3)
    代码随想录算法训练营第五十二天|123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
    2022年招投标,最加分的资质证书排行榜!
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/126496994