首页 文章推荐 家电百科 实时讯息 常识
您的位置: 首页 > 常识 >

指针数组和数组指针区别(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寅时三刻。紫苏准时起床点亮幽冥灯盏,为墨渊备下今日要穿的玄色官服。等待熬煮墨渊偏爱的彼岸花蕊汤的时辰里,紫苏亲自洒扫寝宫,以免手脚粗笨的鬼仆不仔细,坏了墨渊的好心情。

惊雷劈棺!神兽白泽喊我复活了最新章节 江暖白泽全文阅读

江暖带着白泽,撑着她的小竹筏,沿着河岸水缓的地方一路逆流而上。这货总喜欢蹲她肩膀上,说是站的高风景好,呵!AI生成的图片,宝宝们凑和看吧。河边长满了郁郁葱葱的苦柳树,每一棵都