• 指针与引用


    *---优先左结合

    1)两者区别

      1)非空

        指针可赋值NULL,即可以不指向任何对象

        引用必须指向一个对象

      2)合法性

        引用在使用之前不需要测试其合法性

        指针需要被测试,防止为空

      3)可修改性

        指针可以被重新赋值给新对象

        引用一旦被初始化之后,总是指向初始化时被指定的对象

      4)应用

        指针

          1)存在不指向任何对象的可能--此时设置指针为空

          2)需要在不同时刻指向不同对象

    2)指针包括

      1)常量ptr

        注意:char* p;---字符指针,遇到''才结束输出

        

         

      2)数组ptr

        优先级:() > [] > *

        数组指针---行指针:指向数组的指针 如:int(*ptr)[10];----ptr为一个指向一个10个int元素的数组的指针。

        指针数组:一个数组里边装着指针类型的数据 如:int* ptr[];-----ptr[]内方的是地址

      3)函数ptr

        函数指针定义方式:函数返回值类型 (* 指针变量名) (函数参数列表);----指针变量名类型为 :函数返回值类型 (* ) (函数参数列表)

            将“函数声明”中“函数名”改为了“(*指针变量名)”

        作用:如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。

        

        如:

          int(*p)(int, int);

          这个语句就定义了一个指向函数的指针变量 p。

          前面的 int 表示这个指针变量可以指向返回值类型为 int 型的函数;后面括号中的两个 int 表示这个指针变量可以指向有两个参数且都是 int 型的函数。

          所以语句的意思就是:定义了一个指针变量 p,该指针变量可以指向返回值类型为 int 型,且有两个整型参数的函数。p 的类型为 int(*)(int,int)。

      4)this ptr

      5)指向ptr的ptr

        int ** p;

     

    p[1] = *(p+1)-----脱衣穿衣法

  • 相关阅读:
    跳板机操作
    常用进制之间的转换
    vim加脚本注释和文本加密
    LAMP框架
    wiki团队协作软件Confluence
    NFS网络文件系统
    ORACLE-12C-RAC INSTALL
    通过DB_LINK按照分区表抽取数据
    Oracle Rac crs无法启动
    删除undotbs后,数据库无法启动
  • 原文地址:https://www.cnblogs.com/MissZhang-154/p/13418069.html
Copyright © 2020-2023  润新知