• 几个复杂指针类型的分析与对比(转)


    上星期某个夜深人静的夜里Slyar小研究了一下C语言中的指针,对于复杂指针类型的分析偶有所得,写出来谨供互相讨论学习。

    int p;

    p是一个普通的整型变量。

    int *p;

    1、p与*结合,说明p是一个指针。
    2、*p与int结合,说明指针所指向的内容的类型是整型的。

    所以p是一个返回整型数据的指针。

    int p[5];

    1、p与[]结合,说明p是一个数组。
    2、p[5]与int结合,说明数组里的元素是整型的。

    所以p是一个由整型数据组成的数组。

    int *p[5];

    1、p与[]结合(因为其优先级比*高),说明p是一个数组。
    2、p[5]与*结合,说明数组里的元素是指针类型。
    3、*p[5]与int结合, 说明指针所指向的内容的类型是整型的。

    所以p是一个由返回整型数据的指针所组成的数组。

    int (*p)[5];

    1、p与*结合,说明p是一个指针。
    2、*p与[]结合,说明指针所指向的内容是一个数组。
    3、(*p)[5]与int结合,说明数组里的元素是整型的。

    所以p是一个指向由整型数据组成的数组的指针。

    int **p;

    1、p与*结合,说明p是一个指针。
    2、*p与*结合,说明指针所指向的元素是指针。
    3、**p与int结合,说明指针所指向的内容的类型是整型的。

    所以p是一个指向整型指针的指针。

    int p(int);

    1、p与()结合,说明p是一个函数。
    2、p()与()里的int结合,说明函数有一个int型的参数。
    3、p(int)与外面的int结合,说明函数的返回类型是整型。

    所以p是一个有一个整型参数且返回类型为整型的函数。

    int (*p)(int);

    1、p与指针结合,说明p是一个指针。
    2、*p与()结合,说明指针指向的是一个函数。
    3、(*p)()与()里的int结合,说明函数有一个int型的参数。
    4、(*p)(int)与最外层的int结合,说明函数的返回类型是整型。

    所以p是一个指向有一个整型参数且返回类型为整型的函数的指针。

    int *(*p(int))[5];

    1、从p处开始,先与()结合,说明p是一个函数.
    2、p()与()里的int结合,说明函数有一个int型的参数。
    3、p(int)与外面的*结合,说明函数返回的是一个指针。
    4、(*p(int))与[]结合,说明返回的指针指向的是一个数组。
    5、(*p(int))[5]与*结合,说明数组里的元素是指针。
    6、*(*p(int))[5]与int结合,说明指针所指向的内容的类型是整型的。

    所以p是一个参数为一个整数据且返回一个指向由整型指针变量组成的数组的指针变量的函数。

  • 相关阅读:
    Nginx的配置详解
    马拉车算法
    C++ 智能指针(shared_ptr/weak_ptr)原理分析
    大小端(内存、寄存器、CPU)
    printf函数输出字符串乱码问题
    ArcGIS中应用Expressions标注(Label)之二—使用外部数据库中数据标注要素
    Cisco Aironet ap3g1/ap3g2 8.5版本胖AP固件网页配置教程
    Golang mapstructure
    NDB 和 InnoDB 的不同
    高质量:Makefile
  • 原文地址:https://www.cnblogs.com/10jschen/p/2627588.html
Copyright © 2020-2023  润新知