如题,在最后两行产生错误:非法的间接寻址
#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;
}