C语言二维数组元素的引用(下)

 2023-03-16 20:20:39  阅读 0

一、概述

接上一篇文章我们讲解了两种实现方式,不懂得同学希望能看一下之前的文章,本篇文章我们会继续讲解。

类型说明符  (*指针名)  [常量表达式];

接下来我们看一段代码对之前的内容进行梳理:

有下面程序段如下:

int a[3][4];
 int (*p)[4]=&a[0];等价于 int (*p)[4]=a;

//定义了一个指向一维数组的指针p,指向包含4个int型元素的一维数组a[0]。此时p+1指向下一个一维数组a[1]。

二维数组元素a[i][j]的表示方法有很多种,这里我们只讲解两种:

*(*(p+i)+j);

*(a[i]+j);

我们思考一个问题:

a+i代表行号为i的行首地址(按行变化)我们是都知道的

那么*(a+i)代表什么?

a[0]代表a[0][0]的地址

a[0]+2代表a[0][2]的地址

其实就是位置不断地增加 前进,可以当成一个移动的风向标。、

思考:

a[i]+j代表谁的地址?

我们首先要对a[i]的性质进行分析梳理,如果a是一维数组名,则a[i]代表a数组的第i+1个元素。那么如果a是二维数组名的时候是什么意思那,其实是二维数组和一维数组大同小异a[i]代表一维数组名,但是它只是一个地址而已,这并不代表某一元素的值。即:a,a+i,a[i],a[i]+j,*(a+i)+j都是地址,而*(a[i]+j),*(*(a+i)+j)都是元素

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码