利用指针数组输出二维数组

指针数组来输出二维数组 smart power

int (*pt)[4];
上述语句表示定义一个指针变量p,包含4个指向整形元素的一维数组,p表示该一维数组的首地址,可以将p看成是二维数组中的行指针,而p+i表示第i行的首地址,那么 *(pt+i) + j 就表示二维数组第i行第j列的元素地址,*(*(pt+i)+j)就表示第i行第j列的元素值。

代码中有一个地方不懂,已经注释出来了,欢迎评论大神指出。

#include <stdio.h>
#include <stdlib.h>



int main()
{
    int test[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    int *p,(*pt)[4],i,j;
    printf("The array is: \n");
    for(p = test[0]; p < &test[0][12]; p++)
    {

        if((p - test[0])%4 == 0)
            printf("\n%4d",*p);
        else
            printf("%4d",*p);

//        printf("\n\n%d,%d,%ld",p,test[0],p-test[0]); // 有个问题希望评论大神解决,为什么地址的差4表示1
    }
    printf("\nplease input the position like:i = , j = \n");
    scanf("i = %d, j = %d", &i, &j);
    pt = test;
    printf("\na[%d][%d] = %d",i,j, *(*(pt + i) + j));

    return 0;
}

==编程之路,你我相伴
在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值