首页 > 编程语言 > 详细

二维数组与数组指针之间的关联

时间:2020-11-29 22:54:06      阅读:37      评论:0      收藏:0      [点我收藏+]

二维数组与数组指针之间的关联

思考起点

如何通过指针来读取数组内局部数据

1.使用小数组来截取大数组

    int main()
    {
        int a[8]={1,2,3,4,5,6,7,8};
        int b[2]={};
        b = a;
        printf("%d\n",b[0]);
        return 0;
    }

	error: incompatible types in assignment of ‘int [8]’ to ‘int [2]’

编译失败,左右类型不一致;改进一下

2.使用指针来截取

    int main()
    {
        int a[8]={1,2,3,4,5,6,7,8};
        int *b;
        b = a+2;
        printf("%d\n",b[0]);
        return 0;
    }

	reslut:
	3

初步实现数据截取,测试二维数组

3.使用指针截取二维数组

    int main()
    {
        int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
        int *b;
        b = *(a+1);
        printf("%d\n",*((b+4*1)+1));
        return 0;
    }
    
    reslut:
    10

也实现了,但是总觉得少了点味道,变味的数组,*((b+4*1)+1),调用起来还得自己去算,这点可以通过设置常量解决,但是这个式子打起来是真的累,在改改。

4.使用数组指针(集合指针)截取二维数组

    typedef int (*ptest)[4];
    int main()
    {
        int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
        ptest b;
        b = a+1;
        printf("%d\n",b[1][1]);
        return 0;
    }
	
	reslut:
	10

舒服了,截取出来还是数组的用法。

总结

对于数组来说,他的本质就是指针,但是对于二维以上的数组,我们不能用单例指针来替换,尽管可以实现,我们可以通过数组指针来实现,保持了原有数组的特性。

二维数组与数组指针之间的关联

原文:https://www.cnblogs.com/haoge2000/p/14057600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!