C 程序中的数组指针



这是教科书中的一个C程序,它要求用户使用3 * 5 2D数组并打印第三行。

我对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("%dn",(*(p+i))+j);
                }
        }
        p = &a[2];
        printf("the third line is:n");
        for(j = 0; j<5; j++){
                printf("%5d", *((*p)+j));
        }
        printf("n");
}
int *p[5];

是一个包含指向int的五个指针的数组。

你想要的是一个指向五个int的数组的指针

int (*p)[5];

因为&a[0]a的第一个元素的地址,它是一个int[5]

编译器应该明确地至少对此发出警告,如果不是错误,这是意料之中的。

更多关于这里: C 指针到数组/指针数组消歧义

相关内容

  • 没有找到相关文章

最新更新