数组指针的定义中“int (*p)[5]=&temp;”的“p"是数组首元素地址的地址吗?
不理解为什么“*(*p+i)”是数组第i个元素。 https://wenda.so.com/q/1373341389065468 仔细看看这张图片int *p,首先它是一个数组,它的大小是5,它里面存放的数据类型是int *,也就是整型指针。所以它叫指针数组、 (从右向左解析这个表示)
int (*p),首先p是一个指针,指向大小为5的数组,因此这叫数组指针。(括号优先)
至于*(*p+i) 等价于 arr,这个是二维数组,与标题的问题不一致, int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组,值为一维数组的首地址,而*p才是数组首元素的地址,虽然p与*p的值是一样的,但是他们的含义不同,这点尤其重要! 最后的魁拔 发表于 2020-3-5 14:18
仔细看看这张图片
C:\Users\Rod\OneDrive\图片\屏幕快照\001.png
我把第十行的p改成d后打印出来的6487552是什么东西呢 sanguine_boy 发表于 2020-3-6 21:47
int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组,值为一维数组的首地址,而*p才是数 ...
int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组
int array;
p = &array;p不是指向拥有5个元素的一维数组吗?为啥还可以指向拥有10个元素的数组?
和 类型一样吗 琴长不过时光 发表于 2020-3-12 18:28
int (*p)是一个数组指针,p指针变量指向一个拥有5个元素的一维数组
int array;
p = &array;p ...
这样不是会报错吗?你的能运行? sanguine_boy 发表于 2020-3-26 21:30
这样不是会报错吗?你的能运行?
能运行好像 琴长不过时光 发表于 2020-3-27 14:48
能运行好像
。。。。。不是吧?能运行的话你贴个图片出来看下
页:
[1]