这是教科书中的一个 C 程序,它向用户询问一个 3*5 二维数组并打印第三行。
我很困惑int* p[5]
。为什么这里需要有[5]
,我觉得int* p
还可以。它可以重复添加并指向int
数组中的下一个内存空间。谁能解释一下指针在这个程序中是如何工作的?
#include <stdio.h>
int main(void){
int a[3][5];
int i,j;
int *p[5];
p = &a[0];
printf("Please input:\n");
for(i = 0; i < 3; i++){
for(j = 0; j<5;j++){
scanf("%d\n",(*(p+i))+j);
}
}
p = &a[2];
printf("the third line is:\n");
for(j = 0; j<5; j++){
printf("%5d", *((*p)+j));
}
printf("\n");
}