数组指针 int (*a)[5] 的a,&a和*a ?

AirRafer 2009-02-07 09:27:57
int b[5] = {0,1,2,3,4};
int (*a)[5] = &b;

为什么a,&a和*a的值都是数组b的地址呢?
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
uwinb 2009-02-12
  • 打赏
  • 举报
回复
只要用简单的输出语句测试一下
就可以发现 a 和 &a 的值并不相同!(因为变量a类型是指针,本身占据空间,所以在它里面所存放的数值和它自身的首地址并非一个概念,当然通过赋值是可以相同的)
进一步测试还可以发现 b 和 &b 的值是一样的!!(因为变量b的类型是数组,本身并不占空间,是一种特殊的左值)
最离奇的莫过于 a 和 *a 的值也是一样的!!!(原因在于a的值来源于&b,那么计算*a的值结果是b,参照上面一行所以是一样的)

其实随便拿出两个变量相比较,发现它们的值是相等的并不是什么奇怪的事。要知道变量除了值这个属性外还有类型、生存期等诸多其它的属性。
int c[2][3]; //&c, c, *c, **c, c[0], &c[0], &c[0][0], ... 这些表达的值都是相同的,但是各自的类型却并不一样!
xidianxiancai 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 waizqfor 的回复:]
C/C++ code
int (*a)[5]//首先说下这是一个指针数组 而不是数组指针 它的指向类型是int()[5] 指针类型是int(*)[5]
int (*a)[5] = &b;//把数组b的地址赋值给了指针数组a 也就是使a指向数组b中的元素 所以在你取a指针的地址的时候 其实也是在读取b的地址因为b赋值给了a
[/Quote]
确实是数组指针,而不是你说的指针数组
xidianxiancai 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 waizqfor 的回复:]
C/C++ code
int (*a)[5]//首先说下这是一个指针数组 而不是数组指针 它的指向类型是int()[5] 指针类型是int(*)[5]
int (*a)[5] = &b;//把数组b的地址赋值给了指针数组a 也就是使a指向数组b中的元素 所以在你取a指针的地址的时候 其实也是在读取b的地址因为b赋值给了a
[/Quote]
确实是数组指针,而不是你说的指针数组
lingling1989r 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 waizqfor 的回复:]
C/C++ code
int (*a)[5]//首先说下这是一个指针数组 而不是数组指针 它的指向类型是int()[5] 指针类型是int(*)[5]
int (*a)[5] = &b;//把数组b的地址赋值给了指针数组a 也就是使a指向数组b中的元素 所以在你取a指针的地址的时候 其实也是在读取b的地址因为b赋值给了a
[/Quote]
其中int (*a)[5]=&b;//因为a和a[0]都是地址,是同样的指向,即a或a[0]这个指针数组的第一号元素或是偏移为0的那个指向b数组的首地址,所以*a一样,你可以理解成a[0]
hityct1 2009-02-07
  • 打赏
  • 举报
回复
a和*a是数组b的地址。

&a是存储指针a的地址。
waizqfor 2009-02-07
  • 打赏
  • 举报
回复

int (*a)[5]//首先说下这是一个指针数组 而不是数组指针 它的指向类型是int()[5] 指针类型是int(*)[5]
int (*a)[5] = &b;//把数组b的地址赋值给了指针数组a 也就是使a指向数组b中的元素 所以在你取a指针的地址的时候 其实也是在读取b的地址因为b赋值给了a
waizqfor 2009-02-07
  • 打赏
  • 举报
回复

int (*a)[5]//首先说下这是一个指针数组 而不是数组指针 它的指向类型是int()[5] 指针类型是int(*)[5]
int (*a)[5] = &b;//把数组b的地址赋值给了指针数组a 也就是使a指向数组b中的元素 所以在你取a指针的地址的时候 其实也是在读取b的地址因为b赋值给了a


vincent_1011 2009-02-07
  • 打赏
  • 举报
回复
这些东西,去看那几本书,什么C指针之类的,看完你就爽飞天了
wanlxp 2009-02-07
  • 打赏
  • 举报
回复
int (*a)[5] 定义了一个指针数组,把b的地址赋给了a[0].

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧