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

  • 相关阅读:
    转 UICollectionView 详解
    springboot配置ssl证书
    服务器ganglia安装(带有登录验证)
    eureka配置说明
    Servlet中获取请求参数问题
    apidoc学习(接口文档定义取代word)
    markdown语法
    JVM分析
    ftp上传或下载文件工具类
    ubuntu命令安装
  • 原文地址:https://www.cnblogs.com/fengong/p/4311235.html
Copyright © 2011-2022 走看看