码迷,mamicode.com
首页 > 编程语言 > 详细

关于C语言中二维数组的P+1与*(P+1)个人浅见

时间:2015-08-25 12:28:41      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:c语言

    本人第一次在51CTO上发表博客,可能会有一些错误,希望各位大神多多指点!好了,闲言少续,我们进入主题:

    在C语言中,有很多数据类型(Int、Float、Char...),那么数组是一种构造类型的数据,个人认为数组是一组具有相同数据类型的数据集合。目前,我们常见的数组为一维、二维的数组。 本文以二维数组为题,首先,我们看一段代码 !

技术分享

    通过代码,我们知道*(P+1),P+1的值是相同的,但含义不同,先说P+1,无论是一维还是二维数组,数组名都可表两层含义:1、指向其起始元素(a[0])的指针;2、表示自身所占的内存(sizeof(a));本文主要以第一层含义为主,二维数组名a,a代表的是二维数组中第一个元素a[0]的地址,即&a[0],而不是数组本身的地址,数组本身地址用(&a)来表示。 由于,有int (*p)[3]=a;说明这个数组指针指向了二维数组中第一个元素(a[0]这个数组),注意是指向,那么p+1,也就是指向了a[1]这个数组,(p的类型为int (*)[3]),由此可知,*(p+1)是p+1所指向空间的内容,那么,这个内容是什么呢?在二维数组中,运算结果得到了一个一维数组,那么能够代表数组整体的只有数组名,一维数组名代表的是其首元素的首地址,而不代表一维数组的地址,也就是&a[1][0],那么*(p+1)=&a[1][0];

技术分享

通过,代码可以看出,推论是正确的。那么如果想取二维数组中的数值,我们可以再进行一次“*”运算,也就是*(*(p+1))即*(&a[1][0]);如代码所示 !

技术分享

这就是我个人的愚见,如果哪里有不对的,烦请各位大神指点一二。

本文出自 “阳子” 博客,转载请与作者联系!

关于C语言中二维数组的P+1与*(P+1)个人浅见

标签:c语言

原文地址:http://9832751.blog.51cto.com/9822751/1687664

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!