zoukankan      html  css  js  c++  java
  • 对于C语言复杂指针类型的分析

    转载自:http://www.slyar.com/blog/complicated-point-type.html

    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是一个参数为一个整数据且返回一个指向由整型指针变量组成的数组的指针变量的函数。

  • 相关阅读:
    ArrayList和CopyOnWriteArrayList
    UML类关系
    Vmware下mint os的安装
    Java VisualVM无法检测到本地java程序 的 解决办法
    谜之闭包
    虚拟DOM(Virtual DOM)
    ES6箭头函数与普通函数的区别
    HTML中 select 与datalist的异同
    备战前端面试
    javascript获取数组中的最大值/最小值
  • 原文地址:https://www.cnblogs.com/fengong/p/4311235.html
Copyright © 2011-2022 走看看