C语言关于指针数组和数组指针

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)))测错误!

请问如何解释这种情况。思考了很久也不知道怎么理解

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问