鱼C论坛

 找回密码
 立即注册
查看: 3028|回复: 3

关于指向多维数组的指针

 关闭 [复制链接]
发表于 2011-7-6 20:38:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自学C语言,看书看到讲 指向多维数组的指针 部分时有一点不明白特来请教,书上这么写:
C语言允许把一个二维数组分解为多个一维数组来处理,
例:有整型二维数组a[3][4],数组a首地址为1000。可分解为三个一维数组即a[0],a[1],a[2],各含四个元素。
从二维数组的角度来看,a是二维数组名,a代表整个二维数组的首地址,也是二维数组0行的首地址,等于1000。
a[0]是第一个一维数组的数组名和首地址,因此也为1000。
*(a+0)或*a是与a[0]等效的, 它表示一维数组a[0]0 号元素的首地址,也为1000。
“*(a+0)或*a是与a[0]等效的, 它表示一维数组a[0]0 号元素的首地址”这句我不懂,
我个人理解“*”是表示间接访问、指向,*(a+0)是(a+0)指向的变量(是个变量),a[0]是一维数组a[0]的数组名,是其首地址(是个地址,即1000),而书上说*(a+0)和a[0]相等是怎么回事?

想了很久还是不懂,有谁能解惑的麻烦相告,先谢谢了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-6 22:03:24 | 显示全部楼层
我个人理解“*”是表示间接访问、指向,*(a+0)是(a+0)指向的变量(是个变量),

a是数组名,在这里将退化为指向其首元素(a[0],也是个数组)的地址,所以
*(a+0)获得a指向的元素,即*(a+0)获得数组a[0]

至于LZ说的,*(a+0)是(a+0)指向的变量(是个变量),没有谁规定说指针指向的一定要是变量(指针还可以指向整个数组,还可以指向函数,它们都不是变量)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-6 22:43:51 | 显示全部楼层
其实 a[n]等同于*(a+n) a[n]是*(a+n)的缩写 因为写a[n]方便啊 不信自己去搜搜数组的知识看看
其实数组也是个指针
等以后学传送指针参数时你就会理解了 数组其实就是一组连续储存的数据用指针索引的形式表现出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-8 19:08:11 | 显示全部楼层
虽然还不怎么理解!不过还是谢谢2位的回复。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表