• 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,得到该空间的地址。

  • 相关阅读:
    干货 | 如何快速实现 BitSail Connector?
    莫名其妙的越界错误原因之条件判断顺序——基于LeetCode 99题,恢复二叉搜索树
    爱创科技X腾讯安全:追溯生态体系赋能酒企数智化转型
    ASP.NET基于WEB的选课系统
    操作系统底层工作原理
    矩阵快速幂+矩阵乘法构造
    spring框架
    C++基础知识1
    webshell免杀之传参方式
    【Python】教你写一个一键上传git的脚本(打包成exe)
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/126496994