• 理解复合类型的声明


    变量的定义包括一个基本数据类型和一组声明符。在同一条定义语句中可能定义出不同类型的变量:

    很多程序员容易迷惑于基本的数据类型和类型修饰符的关系,其实后者不过是声明符的一部分罢了。

    定义多个变量:

    int *p1,p2;//p1是指向int的指针,p2是int。

    int *p1,*p2;//p1,p2都是指向int的指针。

    这种形式着重强调变量具有的符合类型。第二种把修饰符和类型名写在一起,并且每条语句只定义一个变量。

    指向指针的指针:

    一般来说,声明符中修饰符的个数并没有限制。当有多个修饰符连写在一起时,按照其逻辑关系详加解释即可。以指针为例,指针是内存中的对象,向其他对象一样也有自己的地址,因此允许把指针的地址在存放到另一个指针当中。

      通过*的个数可以区分指针的级别。也就是说,**表示指向指针的指针,***表示只想指针的指针的指针,以此类推:

    int val=1024;

    int * p1=&val;//p1指向一个int型的数

    int ** p2=&p1;//p2指向一个int型的指针

    指向指针的引用:

    引用本身不是一个对象,因此不能定义指向引用的指针。但指针是对象,所以存在对指针对象的引用:

    int i=43;

    int * p;//p是一个int型的指针

    int &r=p;//r是一个对指针p的引用

    r=&i;//r引用了一个指针,因此给r赋值&i就是令p指向i。

    *r=0; //解引用r得到i,也就是p指向的对象,将i的值改为0。

    面对一条比较复杂的指针或者引用的声明语句时,从右向左读有助于弄清楚他的真实含义。

  • 相关阅读:
    心血来潮学python
    lua中的table、stack和registery
    wrapper for lua
    FT232RL变砖之后
    12.04 redmine
    Webpack 概念
    如何学习 Webpack
    React基础篇
    Intellij实用技巧
    一行代码搞定图片缩放、旋转、加水印
  • 原文地址:https://www.cnblogs.com/yjds/p/8597213.html
Copyright © 2020-2023  润新知