趣文网 > 作文大全

「C语言指针」原来是这样 我已经完全懂了.老师:真的有点猛

2020-11-26 09:45:01
相关推荐

在初学C语言时候,有些同学总会被一些比较长的语句吓到啥啥啥?这写的是啥?很多同学表示:字都认识,就是看不懂.

本文就来带着大家来学习一种超能力,就是看到一种说明语句,就能准确定位语句所描述的内容,或者说当自己需要某一种数据类型的时候,在类型定义的时候,说明语句怎么写,这是作为一个编程者所必备的能力.

既然是分析说明语句,那么第一个知识点显然就是认识说明语句.什么样子的语句是说明语句呢?简单,只要是以类型名开头的语句,你就可以认为它是说明语句.

我们先看最简单的例子: int p; 显然这是定义了一个整型变量p,那么它是怎么来的呢?是什么样的特性决定了我们这样的理解呢?

显然,我们是通过从左往右阅读,看到了数据类型int,心中有数,这是一个整型,然后看到一个名字p,这是一个变量.所以连起来就是定义了"整型变量p".

把这样的思路推广一下,看另外一个例子: int *p; 从左往右,我们也看到了一个类型 int, 往后看到一个*p, 显然*不可能是名字的组成部分,因为标志符只能是由字母数字下划线构成.

所以名字只能是p,而不是*p. 其实在浏览说明语句的时候,只要见到名字结合了*,就可以下结论:这是一个指针!

那么怎么念呢?还是沿袭我们对于简单说明语句int p;的解读:碰到类型就念类型名,碰到*就念指针,碰到名字就念变量.所以就变成了定义了一个"整型指针变量p".

接着语句升级,看例子int **p; 从左往右看,找到的名字依然是p,名字结合了*,所以这也是一个指针,它可以指向某一种类型的数据.

那么,这个指针可以指向什么样子的数据呢?答案是:看剩余部分,其实就是指针的基类型.

对于说明语句int **p; 除了指针标志*和名字p之外,剩余部分是int *,所以这样的指针可以指向的数据类型是int *,可以存放int *类型数据的地址.

那么怎么读呢?按照我们最朴素的情感,依然是从左往右,连起来就是定义了一个"整型指针指针变量p",也可以读作"指向了整型指针的指针",缩写为二级指针.

接着是另一个例子int p[10];我们也可以从左往右看,显然名字还是叫做p,但是出现了新的元素[],它也不是名字的组成部.那么依然可以下结论:只要名字结合了[],那么这就是数组.所以这是"定义了一个长度为10的整型数组p".

让后接着升级:int *p[10].前面我们说名字结合*就是指针,名字结合[]是数组,那么有*又有[]怎么办呢?答案是:看优先级!

根据优先级规则,名字会先结合[],所以这是一个数组,数组中每一个元素可以相当于什么类型的变量来使用呢?依然是看剩余部分(也就是数组的基类型).在这里剩余部分是int *,就表明了这是一个指针数组,只不过里面每一个元素都是一个整型指针.

最后再来一个:int (*p)[10].沿袭前面的思路就很明显了,先找名字,找到名字是p,接着发现名字结合了*,所以下结论:这是一个指针!是一个指向什么类型的指针由基类型决定,它的基类型是int [10],所以这是一个数组指针.

没有错,就是这么简单.其实还有其他的说明语句,比如说函数指针,指针函数,结构体数组,结构体指针等等,碰到的时候或者需要声明某种类型的变量,可以沿用这样的思路去顺藤摸瓜,就会成竹在胸了.

感谢阅读,学习使人强大.

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

动物作文200字小狗 寒假见闻作文400字 关于成长的作文300字 三人行必有我师焉作文 中国优秀传统文化作文 关于家务劳动的作文 平凡的日子也精彩作文 念念不忘必有回响作文 冬天优秀作文600字 倾吐心声的作文 我想对你说作文100字 感恩有你作文400字 粗心的我作文400字 凡人小事的背后作文 淡泊名利的作文素材 从未止步作文800字 遇见友谊作文600字 我学会了什么三年级作文 坐飞机作文300字 对他人负责作文 我为环保做贡献作文 以勇气为主题的作文 六年级写景作文500字 今天是个好日子作文 欢乐闹元宵作文 小学三年级作文我的妈妈 你是我最好的朋友作文 心中有盏红绿灯作文 世界上最短的作文 打屁股作文小贝