1、改变指针来引用二维数组元素
二维数组在内存中有一个对应的内存地址,只要对这个内存地址加1,就可以指向二维数组的下一行,
即(二维数组的地址+行号)。
如果要取出某一列的元素,则可以通过现有的行号再加上1,就可以指向某一行中的下一列的元素,
即*(*(二维数组的地址+行号)+列号)。
2、例子:
int a[ 2 ][ 3 ] ={{4,5,6},{7,8,9}};
int (*p)[3] = a;
void main()
{
*(*(p+1)+2);
}
指针 |
a[2][3] |
第1列 |
第2列 |
第3列 |
p 指向 |
第1行 |
4 |
5 |
6 |
p+1 指向 |
第2行 |
7 |
8 |
9 |
|
|
|
|
|
|
|
|
|
|
例子分析:
(1)首先,在程序中,我们是定义了一个整形2维数组a并赋值4至9。
(2)在第二行代码中,我们再定义了一个指针变量p,然后,把2维数组a的第一行的地址赋值给p,
所以,p就指向数组中的第一行。
(3)在main函数中,我们使用p+1,同时,当前的p是指向数组中第1行,而加1后就指向第2行,
接着,通过“*”取出第2行的地址,然后,再加2,指向第2行中的第3列的元素地址。
(4)最后,通过最外层的“*”取出第2行第3列的元素值9。
=======================================================================
非常好,现在,我们已经掌握了C语言中的(改变指针来引用二维数组元素)但是,如何去运行用它呢?
所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行
编程训练)
|