十三是个小可爱 发表于 2020-3-5 12:40:50

数组指针的定义中“int (*p)[5]=&temp;”的“p"是数组首元素地址的地址吗?

不理解为什么“*(*p+i)”是数组第i个元素。

qiuyouzhi 发表于 2020-3-5 12:48:17

https://wenda.so.com/q/1373341389065468

最后的魁拔 发表于 2020-3-5 14:18:56

仔细看看这张图片

4goodworld 发表于 2020-3-5 15:49:54

int *p,首先它是一个数组,它的大小是5,它里面存放的数据类型是int *,也就是整型指针。所以它叫指针数组、 (从右向左解析这个表示)
int (*p),首先p是一个指针,指向大小为5的数组,因此这叫数组指针。(括号优先)
至于*(*p+i) 等价于 arr,这个是二维数组,与标题的问题不一致,

sanguine_boy 发表于 2020-3-6 21:47:49

int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组,值为一维数组的首地址,而*p才是数组首元素的地址,虽然p与*p的值是一样的,但是他们的含义不同,这点尤其重要!

十三是个小可爱 发表于 2020-3-7 10:27:30

最后的魁拔 发表于 2020-3-5 14:18
仔细看看这张图片

C:\Users\Rod\OneDrive\图片\屏幕快照\001.png
我把第十行的p改成d后打印出来的6487552是什么东西呢

琴长不过时光 发表于 2020-3-12 18:28:47

sanguine_boy 发表于 2020-3-6 21:47
int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组,值为一维数组的首地址,而*p才是数 ...

int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组
int array;
p = &array;p不是指向拥有5个元素的一维数组吗?为啥还可以指向拥有10个元素的数组?
和 类型一样吗

sanguine_boy 发表于 2020-3-26 21:30:31

琴长不过时光 发表于 2020-3-12 18:28
int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组
int array;
p = &array;p ...

这样不是会报错吗?你的能运行?

琴长不过时光 发表于 2020-3-27 14:48:22

sanguine_boy 发表于 2020-3-26 21:30
这样不是会报错吗?你的能运行?

能运行好像

sanguine_boy 发表于 2020-3-27 15:47:10

琴长不过时光 发表于 2020-3-27 14:48
能运行好像

。。。。。不是吧?能运行的话你贴个图片出来看下
页: [1]
查看完整版本: 数组指针的定义中“int (*p)[5]=&temp;”的“p"是数组首元素地址的地址吗?