A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

    对于C语言的初学者们,有关二维数组a[i][j]与指针*(*(a+i)+j)之间的关系,确实困扰了不少人。听我慢慢道来,看完后一定会完全理解的哦!
    1、首先要理解二维数组是由多个一维数组构成的。例如:a[3][4] = {a[0],a[1],a[2],a[3]};这里的元素:a[0],a[1],a[2],a[3],其实表示的是一维数组的首地址,也就是说是二维数组a[3][4]的每行数组的首地址。
    2、*(*(a+i)+j)其中的i、j表示偏移量,*号表示取值。
    3、在二维数组a[i][j]中,a[i]表示第i行数组的首地址,a在这里可以理解是二维数组的首行数组的首地址。所以会有: a[i] = *(a+i); 关键点理解:*(a+i) 确实取得的是一个值,它是一个二维数组中第i个元素的地址。
    4、接下来便是: a[i]+j = *(a+i)+j; 等式两边均表示二维数组中第i行第j列元素的地址。
    5、最后: a[i][j] = *(*(a+i)+j);便是直接取到二维数组中的元素的值。
多说一句,二维数组可以与二级指针来对照理解,希望对你有所帮助。

2 个回复

倒序浏览
啦啦啦啦~~~
回复 使用道具 举报
二维数组与二级指针区别大了,不能这么理解,我感激啊二维指针变量可以对照理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马