前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >指针详解(一)

指针详解(一)

作者头像
石的三次方
发布2021-01-06 09:25:10
3390
发布2021-01-06 09:25:10
举报
文章被收录于专栏:石的三次方石的三次方

C语言可谓是因为指针而拥有了其他的语言所不拥有的作用,但是却又因为指针导致它对于初学者而言是一个很难克服的难题。接下来我们直切主体——指针。

先来看看指针的定义:int *p

解释一下:可以将指针就是在各种基本类型的基础上派生出来的类型。

玩指针有几个问题需要搞明白下面来仔细的解释这几个问题。

1. 指针的类型

int *p //类型为int * int *p[] //类型为int * [] int (*p)[] //类型为int (*)[] int *(*p) // 类型为int *(*p) int *(*p)[] //类型为int*(*p)[] int (*p)(int) //类型为int (*)(int)

有什么规律,相信大家已经心里有数了。没错就是将指针的变量名直接去掉就是指针的类型了。是不是很简单,接下来趁热打铁,咱们继续。

2. 指针指向的类型

int *p //类型为int int *p[] //类型为int [] int (*p)[] //类型为int ()[] int *(*p) // 类型为int (p) int *(*p)[] //类型为int (p)[] int (*p)(int)//类型为int ()(int)

对对对,你的想法是正确的。就是将*和变量名直接去除,所得到的就是指针所指向的数据类型。

懂了这些是不是感觉指针现在不是那么的难了。既然如此那么我们就来几个事例来分析一下吧。

int *p //定义p是一个指向int类型的指针

int *p[] //由于[]比*的优先级高则p先和[]结合,说明p是一个数组,然后再与*结合说明p是一个数组指针,然后再与int结合,说明p是由指向整形数据的指针组成的数组。

int (*p)[] //()的优先级高于[]所以p先于*结合,说明p是一个指针,再与[]结合说明p指向一个数组,再与int结合说明p是一个指向整形数组的指针

int **p //p先与*结合说明p是一个指针,然后再与*结合说明**p指向了一个指针

int **p[][N] //N为常量,p首先与[][]结合说明p是一个二维数组,然后p再次与*结合说明p是一个指向二维数组的指针,然后再与*结合说明它指向了那个二维数组的首地址。

int *p(int) //p先与(int)结合说明它是一个函数,再与*结合说明他是一个指向函数的指针,再与int结合说明它是指向一个返回值为整形的函数。

内容结束,有什么不懂的可以再微信公众号后台留言,谢谢观看。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 石的三次方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 指针的类型
  • 2. 指针指向的类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档