我想了解指向数组的指针如何工作。代码片段;
#include<stdio.h>
int main()
{
int arr[3] = { 0 , 8 ,10 };
int (*ptr)[3] = &arr;
int i = 0;
for (i = 0; i < 3 ; i++)
printf("Address (%p) - value( %d)\n", (*ptr+i) , *(*ptr + i));
return 0;
}
一个星号*
取消引用ptr
. If i = 1
, 为什么是(*ptr+i) = ith value
not value at ptr + i
.
的类型ptr
is int (*)[3]
(指向长度为 3 的数组的指针int
)。的类型*ptr
is int[3]
(数组长度为 3int
)。在大多数表达式中,操作数类型int[3]
被转换为int *
(指向int
) 指向数组的第一个元素。表达方式(*ptr+i)
结果是一个指向i
通过指针算术计算数组的第一个元素。在表达式中*(*ptr+i)
,指向的指针i
数组的第一个元素被取消引用以产生i
数组的第一个元素,其类型为int
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)