C语言怎么对二维数组进行赋值与输出?

利用二级指针对二位数组int 型 进行赋值与输出?

可以先让一个一级指针指向二维数组里的第一个数组,然后再用二级指针指向这个一级指针,然后就可以让二级指针来对数组进行赋值和输入了。

测试代码如下:

参考链接:


https://www.cnblogs.com/ywsoftware/p/4527239.html


#include <stdio.h>
#define N 2  // 指定二维数组行数 
#define M 3  // 指定二维数组列数 

int main(void){
    
    int nums[N][M];
    // https://www.cnblogs.com/ywsoftware/p/4527239.html    
 // 先使用int指针指向二维数组第一个数组
    int*p1 =nums[0]; 
    // 然后让二级指针,指向这个一级指针 
    int **p2=&p1;
    

    // 使用二级指针 从输入获取数据赋值给二维数组 
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            scanf("%d",*p2+i*M+j);
            //printf("i=%d,j=%d, *(*p2+i*N+j)=%d\n",i,j,*(*p2+i*M+j));
        }
    }
    
    // 使用二级指针,打印二维数组里的数据 
    for(int i=0;i<N;i++){
        
        for(int j=0;j<M;j++){
        //printf("i=%d,j=%d, *(*p2+i*N+j)=%d\n",i,j,*(*p2+i*M+j));
            printf("%d ",*(*p2+i*M+j));
        }
        printf("\n");
    }
    
    return 0;
    
} 

img