zoukankan      html  css  js  c++  java
  • C语言教学--二维数组和指针的理解

            对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻.

            我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, 二维数组,就是把一维数组中的内容中又存放了一系列的箱子, 这样就构成了二维数组.

            这就像一辆火车, 火车有很多节火车厢, 每个火车厢里面有一趟座位, 那我们火车厢的编号和每个火车座位的编号就不同了.  例如int  a[3][4] ; 3节火车厢, 每个火车厢中有四个挨着的座位.  实际的座位的编号和我们的火车厢的编号这是我们要区分开的,  我们的火车厢编号就是a[0],a[1],a[2](从座位的角度上来看)

             从外面看, 我们每节火车厢的地址, a+0,a+1,a+2, a就相当于一个行地址, 火车厢为单位的地址, a+1是跳到下一个车厢的首地址,  而a[0]就相当于是座位的首地址, a[0]+0就会跳到第0节车厢的第0个座位, a[0]+1就会跳到第0节车厢的第1一个座位.

            指针数组指向二维地址(座位的地址,实际地址):

            建立一个指针数组来引用二维数组中的元素:int *p[3], a[3][2],i,j; 从各种可以看到p是一个数组名, 在定义时系统给他开辟3个连续的存储单元; 在这个前面加上*号表示, 数组的基本类型为int的指针类型. 我们可以通过for循环让这个数组里面的指针指向每排"座位"的首地址:

            这个数组可以理解为是"座位"地址类型数组.

            而下面我们定义的这个数组: int a[3][2], (*prt)[2] 为行指针数组(火车车厢数组). 这样我们可以把每节"车厢的地址"放入到我们的行指针数组变量中了.

            这样我们可以把a这个行地址常量赋值给行地址变量 p=a. p+1等价于a+1,等价于a[1] 当p指向数组的首地址时, 可以通过以下形式来引用p[i][j]:

                   (1) *(p[i]+j)

                   (2)*(*(p+i) +j ))

                   (3)(*(p+i))[j]

                   (4)p[i][j]

            p是一个行指针变量, 而二维数组名a是一个行地址变量.

            以上就是对二维数组和指针的理解.

  • 相关阅读:
    【English】20190522
    06_Intent和IntentFilter
    05_Content Provider
    04_ Broadcast Receiver
    03_Service的绑定
    02_启动和销毁Service
    01_Activity生命周期及传递数据
    Android对应版本号
    如何在word中插入代码
    项目经验总结
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3424283.html
Copyright © 2011-2022 走看看