关于c语言二维数组与指针的个人理解及处理办法。

        相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题,并且问题一出现,很难一时间解决。

     我自学已经1个多月了,对C语言了解还很浅薄。学到数组和指针的时候,我看了大量的博文和书籍并亲自动手实践,做了一些总结,希望和大家分享交流,若有错误和不足之处,希望大家好不客气的提出,以免误导他人。

     好了,现在开始。

     我对二维数组和指针的处理划分为两类降维法线性连续法。(这仅仅是我自己命命名而已)。

         1) 降维法     

               我记得在一本日本作家的书里看到过这样一个理念:C语言其实没有所谓的“二维(多维)数组”。此说法的 依据是:拿二维数组来说,其实就是一个特殊的一维数组,特殊在于它里面的元素又是若干个数组。若把里面的数组看做是一个元素,那么,这个数组就是普通的一维数组了。降维法的思想就是如此。

               如何降维?

 例如:int arr[3][2]={ {1,2},{3,4},{5,6}};  我们去掉arr[3],就剩下int [2],那么int[2]就是降维后的“一维数组”的                  元素的类型,也就是说:{1,2}  和 {3,4}和{5,6} 这3个元素的类型是int[2]型。现在,你就把这个数组当做是一                维数组看待吧。同样,我们定义一个指针去指向这个数组,当然这个指针的类型必须要和这个“一维数组”的                类型一致,所以,定义为:int (*p)[2]   (请注意这个与int*p[2]的区别) 。接下来就是让指针变量p指向数组                      了,和一维数组一模一样,  p=arr   或者 p=&arr[0]。下面我们来多数组进行处理。

                        # include <stdio.h>

                        int main (void)

                         {

                              int arr[3][2]={ {1,2},{3,4},{5,6}};

                              int i,j;

                              int (*p)[2]=arr;     //或者= &arr[0]

                              for(i=0;i<3;i++)

                                for(j=0;j<2;j++)

                                &

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值