首页 常识
您的位置: 首页 > 常识 >

指针数组和数组指针区别(C语言学习篇-----“指针数组”与“数组指针”)

100次浏览     发布时间:2024-09-09 08:34:26    


指针数组和数组指针


本质区别

指针数组:实质是一个数组,指针是修饰词,表明这个数组中存储的内容全部是指针变量

数组指针:实质是一个指针,数组是修饰词,表名这个指针指向的是一个数组

我们从以下几个常见的表达式来分析:

int *p[5];

int (*p)[5];

int *(p[5]);

表达式分析

首先为了分析上面3个表达式, 我们需要说明表达式中出现的运算符(* 和 [])的优先级。

C语言运算符优先级

从上面的图中,我们可以看出优先级:[] > *

OK, 接下来我们开始分析:

  • int *p[5]

因为[]的优先级比*高,因此变量p先于[5]结合,故p是数组, 而int *就是修饰词,总体就是p是一个数组,数组有5个元素,数组中的元素都是指针,指针指向的元素类型是int类型的;整个符号是一个指针数组。

  • int (*p)[5]

因为()的原因,p与*先结合,因此p是一个指针,然后再与[5]结合,此时的[5]并成了修饰词;总体就是p是一个指针,指针指向一个数组,数组有5个元素,数组中存的元素是int类型; 整个符号是一个数组指针。

  • int *(p[5])

[]的优先级本来就比*,再加上符号()的作用,p肯定先与[5]结合了,因此p是一个数组, int *是修饰词,总体就是p是一个数组,数组有5个元素,数组中的元素都是指针,指针指向的元素类型是int类型的;这与第一种情况一致(其中运算符()可有可无),整个符号是一个指针数组。

总结

首先要知道一般规律:int *p;(p是一个指针); int p[5];(p是一个数组)

然后判断核心(变量名p)与谁先结合,如果核心和*结合,表示核心是指针;如果核心和[]结合,表示核心是数组(找结合);之后再向外扩展(找修饰词)。

相关文章

狗狗不吃狗粮是因为什么(狗狗不爱吃狗粮到底怎么办?)

狗狗不吃狗粮,除得了疾病导致外,只有一种可能,那就是狗狗挑食了!下面几种情况你有没有呢?1、给狗狗喂食人类的食物,尤其是在咱们吃正餐的时候,恨不得每样菜你都在想能不能给狗尝尝呢?2、给狗狗购置了各种种类的零食,并坚信狗狗肯定都喜欢吃。3、狗狗吃饭的时间不固定,甚至要时刻保持狗狗的食碗为满满状态4、狗

mesh是什么意思怎么使用(路由器的Mesh组网适合家用吗?)

随着数字时代的来临,WiFi上网成为家庭必备。然而,由于路由器最大功率有限制,因此WiFi信号传播距离不会太远,而且受墙的阻隔后,会产生严重的衰减,就造成一些房间WiFi信号很弱,甚至无法上网的情况。目前解决家庭WiFi信号覆盖的问题,主要采用Mesh组网和AC+AP两种方式。其中AC+AP组网的方

团徽佩戴规范(团旗、团徽和团歌的使用要求)

根据团中央最新印发的《中国共产主义青年团团旗、团徽、团歌制作使用管理规定》,团旗、团徽、团歌:◇不得用于或变相用于商标、商业广告以及商业活动◇不得在不适宜的场合使用◇不得以个人或商家名义公开售卖非团中央和各省、市、县级团委监制的团旗和团徽除此之外团团再给大家梳理一些团旗使用中可能出现的问题// 错误

描写郊外风光的诗句(十二首迷人“野色”诗词)

“野色”,字面意思是原野或郊野的景色,它是相对于城市或室内而言的风景,即人们常说的大自然。中国人的传统是喜欢大自然,讲究“天人合一”,因此,“野色”相关的诗词也就比比皆是了。一般而言,诗词中的“野色”,人们更喜欢那些广阔的“野色”,这对比于城市或室内来说,就更显得大自然的博大。比如,北宋诗人滕元发就

官宣是什么意思啊(“官宣”体为何会走红?)

所谓“官宣”体通常是以“官宣”一词作为新闻标题开头的重要表达形式。 “官宣”一词最初源于某男女明星在微博上正式发布二人结婚的消息。之后,“官宣”一词迅速蹿红网络。从字面理解,“官宣”即“官方宣布”。事实上,在“官宣”走红之前,作为“官宣”雏形的“官方宣布”早已为大多数人熟知。“官方宣布”语义重心在“