指针数组和数组指针的详细解答

/**首先弄明白什么是指针数组,什么又是数组指针。
    指针数组:
        类型名  *数组名[数组长度]
        如:  int *p[8];
    因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p
    的元素是指向整型数据的指针。相当于定义了8个整型指针变量。在此,p就是
    数组元素为指针的数组,本质为数组。

    数组指针:
        类型名 (*指针名)[数组长度]
        如:int (*p)[8];
    p先与*号结合,形成一个指针,该指针指向的是有8个整型元素的数组,
    p即为指向数组首元素地址的指针,其本质为指针。

**/

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

int main()
{
    int arr[4][4];
    int i,j,k=0;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            arr[i][j]=k;
            k++;
        }
    }
    int *p1[4];
    int (*p2)[4];

    for(k=0;k<4;k++){
        p1[k]=arr[k];
    }

    printf("\n使用指针数组的方式访问二维数组arr\n");

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("arr[%d][%d]=%d\t",i,j,*(p1[i]+j));
            ///p1[i]+[j]即第i行第j列的元素地址
        }
    }
    printf("\n-----------------------------------\n");
    p2=arr;
    printf("\n使用数组指针的方式访问二维数组arr\n");

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("arr[%d][%d]=%d\t",i,j,*(*(p2+i)+j));
        }
    }


    return 0;
}




运行结果:  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值