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

对于C语言复杂指针类型的分析的更多相关文章

  1. go语言的指针类型

    一.指针与引用的相关概念 什么是指针? 指针,全称为指针变量,是用来存储内存地址的一种变量.程序中,一般通过指针来访问其指向的内存地址中的内容(数据). 什么是引用? 引用,是C++中提出来的一种新的 ...

  2. c语言定义指针类型需注意事项

    1)在定义说明语句中,指针变量名之前的星号“*“是指针变量的修饰符,也就是说它所修饰的变量是指针变量. 2)指针变量是用它们所指向的对象类型来区分的.如定义 int *ip,类型int并不是指针的类型 ...

  3. C语言之指针用法总结

    C语言指针概述:1.计算机系统中,无论是存入或是取出数据都需要与内存单元打交道,物理器件通过地址编码寻找内存单元.2.地址编码是一种数据,C语言的指针类型正是为了表示这种计算机所特有的地址数据.3.存 ...

  4. C++语言中数组指针和指针数组彻底分析

    #################################                              ##       基本知识               ##        ...

  5. Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

    由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...

  6. C语言之void类型及void指针 分类: C/C++ 2015-07-13 11:24 8人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/pengyingh/articles/2407267.html 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在 ...

  7. C语言指针类型 强制转换

    关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...

  8. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  9. C语言错误 指针的类型错误

    //指针的类型错误 #include<stdio.h> #include<stdlib.h> #include<string.h> //用const来限制形参的指向 ...

随机推荐

  1. python爬虫学习(8) —— 关于4399的一个小Demo

    堂弟喜欢各种游戏,在没有网络的情况下,上4399显得很无力. 另外,4399广告好多,,而且加载慢.. 怎么办,,写个爬虫吧,,把4399上的"好玩"游戏爬下来. 1. 分析阶段 ...

  2. MonoBehaviour Lifecycle(生命周期/脚本执行顺序)

    脚本执行顺序 前言 搭建一个示例来验证Unity脚本的执行顺序,大概测试以下部分: 物理方面(Physics) 渲染(Scene rendering) 输入事件(InputEvent) 流程图 Uni ...

  3. Web Service

    Web Service全称XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...

  4. Fabio

    Fabio 安装和简单使用 Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用 ...

  5. 《虚拟伙伴》AR增强现实应用开发总结

    一.概述 1.1选题背景 随着时代的发展,人们的生活节奏越来越快,生活质量也越来越高,但却在繁忙之中忽略或者忘记了关心自己成长时代最重要或者最正确的事情和道理.虽然现在有很多社交平台,如微博,微信,f ...

  6. .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  7. 讲座:Influence maximization on big social graph

    Influence maximization on big social graph Fanju PPT链接: social influence booming of online social ne ...

  8. 扩展RadioButtonListFor和CheckBoxListFor

    在我们做正常的MVC的开发中,一些基本的控件已经够用了,但是有时候我们需要用到库里面没有的一些控件,比如RadioButtonListFor和CheckBoxListFor这类的列表控件,在MVC库里 ...

  9. GreenDao的使用

    1.生成代码文件

  10. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...