指针的指针,报错:非法的间接寻址

如题,在最后两行产生错误:非法的间接寻址

#include<stdio.h>
main() {
    int a[10];
    int* p1, * p2;
    int i;

    for (i = 0;i < 10;i++) {
        scanf_s("%d", &a[i]);
    }
    p1 = a;
    p2 = &p1;
    for (i = 0;i < 10;i++) {
        if (*(*p2 + i) % 2 == 0) {
            printf("%5d", *(*p2 + i));

        }

    }

P2 存储的是P1 的地址。所以P2是二级指针,你要定义如下表示
int ** P2= 0;

p2 是一个二级指针,定义时要用int **p。

修改之后:
#include
int main() {
int a[10];
int* p1, *p2;
//int *p1;
int i;

for (i = 0; i < 10; i++) {
    scanf_s("%d", &a[i]);
}
p1 = a;
p2 = p1;
for (i = 0; i < 10; i++) {
    if (*(p1 + i) % 2 == 0)
        printf("%5d", *(p1 + i));
}
return 0;

}