• C、指针基础1


    1、指针:每个变量都有自己的地址,地址也是数据,就用地址类型的变量来装,地址类型就叫指针类型,即指针类型定义的变量就是专门用来装地址的。 

    2、基本数据类型指针:基本数据类型变量的地址,用对应的基本数据类型指针变量来装。

    3、声明指针变量:

          short  *pc;

          char   *ps;

    注意:1、short*、char*叫指针类型,pc、ps叫指针变量。

               2、*表示 pc、ps是指针变量、类型int a[10]的[],在定义变量时是指示作用。

               3、空格放在哪儿都行,short *pc,short * pc,short* pc。

               4、没有初始化的情况下,数据就是未知的。

    4、定义(初始化)指针变量:

              int a=12;                                                                                                                                              int *pa=&a;

              float  b=12.4f;                                                                                                                                      float  *pa=&b;

            注意:

             1、各种类型变量的地址的类型不同,a b变量的地址类型就是变量对应的类型,所以装地址的指针变量的类型,是相应的类型。    

             2、指针的赋值操作又叫指向,即pa指向变量a的地址。

             3、要指向合法的地址空间,非法的空间会异常中断。

             4、类型模型:

               

     5、NULL:

    double* pd=NULL;//NULL就是0,用来初始化指针

    int as=0;//意义相同。

    6、指针的赋值(重新指向)

         double  d=4.5;

        pd=&d;

         注意点:

       1、指针变量也是变量,可以装别的地址,但是要是同类型的。

       2、重新赋值也叫重新指向。

    对于一块空间 int a=12,a是这块空间的名字,同名名字可以操作这块空间,&a是空间的地址,通过地址也能操作该空间。

    计算规则: *+空间的地址就是该空间名字。(*0x10==a)

                       *+变量的地址就是该变量本身。(*&a==a)

    即*&a==a;  

    读:printf *&a=12 ,  则a输出12;

    写:*&a=34,则a=12 被覆盖成了32。

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

    7、指针的操作:*

    可以通过变量来记录地址值。

    int a=12;

    int* p=&a;  //p==&a。

    可以直接将*&a==a变为*p==a。

    即*p与a的用法完全一样。

    读:printf *p,输出12;

    写: *p=34,原12被覆盖了,a也是34了。

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

  • 相关阅读:
    Springboot与RestTemplate
    c++ 异常处理简单示例
    CSS复合选择器(二)
    OSS服务和MinIO存储做一个区分解析
    vue - 指令2
    【分类网络】GoogLeNet
    DN-DETR源码讲解
    ASP.NET Core 使用redis
    【红日靶场】vulnstack4-完整渗透过程
    多进程间通信学习之有名管道
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/126400818