带你学C带你飞 数组指针
#include <stdio.h>int main()
{
char temp = {1,2,3,4,5};
char (*p2) = &temp;
int i;
for (i = 0; i < 5; i++)
{
printf("%d\n", *(*p2 + i) );
}
return 0;
}
不太懂,尤其此句
printf("%d\n", *(*p2 + i) );
*p2取出的是什么,+i又变成什么?
一般的指针变量 如*str="abcde"
*(str+1)这样就很好理解。、
但是上面数组指针的*p2取出的是什么我难以理解,求指导。 https://fishc.com.cn/thread-161320-1-1.html https://fishc.com.cn/forum.php?mod=viewthread&tid=159291&highlight=%CA%FD%D7%E9%D6%B8%D5%EB p2这个是二级指针,
*p2 解引用,返回的是一级指针,这才是temp = {1,2,3,4,5}; 也就是*p指向的是temp的数组地址上,那么*p2+1,就想当于指向temp数组的第二个元素所在的地址,类推
然后
*(*p2 + i)对(*p2 + i)进行解引用,不就是取出当前数组地址上的值吗?如果是*(*p2 + 1) 不就是取2吗?
你的困扰点我觉得是
你要记住,你如果能把数组与一级指针联系,那么对数组取地址,是不是应该是二级指针?
打开看看三楼的那个链接,你就什么都清楚了
页:
[1]