怎样用列指针的方式做本题?

#include "stdio.h"

void main()

{

int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; int (*p)[4],i,j;

p=a;printf("请输入元素下表i,j的值:"); scanf("i=%d,j=%d",&i,&j);

printf("你输入的元素值:"); printf("a[%d][%d]=%d\n",i,j,p[i][j]);

printf("a[%d][%d]=%d\n",i,j,*(p[i]+j)); }

使用列指针访问二维数组某元素,使用列的长度4*行的下标i+某列的位置j即为距离二维数组首元素的偏移量,取指向首元素的指针+偏移量后的指针位置的值即为对应二维数组元素的值,代码如下:

参考链接:


#include "stdio.h"

int  main()

{

    int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};    
    p=a;
    
    printf("请输入元素下表i,j的值:"); 
    scanf("i=%d,j=%d",&i,&j);
    
    printf("你输入的元素值:"); 
    printf("a[%d][%d]=%d\n",i,j,p[i][j]);
    printf("a[%d][%d]=%d\n",i,j,*(p[i]+j)); 
    
    printf("使用列指针的结果为;\n");
    int * ap = &a[0][0];
    printf("你输入的元素值:"); 
    
    // 列指针访问数组某元素,即行的下标数i*每行的长度4+某列的位置j,即可用列指针访问二维数组对应的数组元素
    // https://blog.csdn.net/GenuineMonster/article/details/104669402 
    printf("a[%d][%d]=%d\n",i,j,*(ap+4*i+j));
    
    return 0;
}

img