C语言关于指针数组输出的问题
#include "stdio.h"
int main()
{
char *p1[4] = { 'A','B','C','D' };
char(*p2)[4] = &p1;
for (int i = 0; i < 4; i++)
{
printf("%c\n", *(*(p2 + i)));
}
system("pause");
return 0;
}
这里是输出格式是* (*(p2 + i)))
如果替换为*(*p2 + i)),则错误!
#include "stdio.h"
int main()
{
char *p1[4] = { 'A','B','C','D' };
char(*p2)[4] = &p1;
for (int i = 0; i < 4; i++)
{
printf("%c\n", *(*(p2 + i)));
}
int *p1[4] = { 9,8,7,6 };
int(*p2)[4] = &p1;
for (int i = 0; i < 4; i++)
{
printf("%d\n", *(*p2 + i));
}
system("pause");
return 0;
}
这里是输出是*(*p2 + i)),
如果替换为* (*(p2 + i)))测错误!
请问如何解释这种情况。思考了很久也不知道怎么理解