看个三维数组的笔试题。
给定下列声明,把下列各个指针表达式转换为下标表达式。
这是最近学生在做笔试题时候遇到的,先别管这个三维数组有没有实用价值,既然出现了,还是得做。
三维数组可以看成是由多个二维数组组成。
比如题目中声明的这个,就是由4个5行3列的二维数组组成。把这些二维数组编个号,就是 0 1 2 3。
三维数组比二维数组更加复杂一点,我们先来搞懂几个概念。
在三维数组中:
数组名 array 表示第 0 个二维数组的地址;
array[0] 表示第 0 个二维数组第 0 行的地址;
array[0][0] 表示第 0 个二维数组第 0 行第 0 个元素的地址;
array[0][0][0] 就是具体的元素,它不表示地址。
再来看题目。
*array。array表示第 0 个二维数组地址,*array表示第 0 个二维数组第 0 行的地址,下标表示法 array[0]。
*(array + 2) 。array + 2 表示第2个二维数组的地址,再加星号,就是第2个二维数组首行地址,下标表示法 array[2]。
*(array + 1) + 4。 array + 1表示第 1 个二维数组的地址,加上星号,表示第1个二维数组首行地址,再加4,表示第4行地址,下标表示法 array[1] + 4。
第四题,在第三题的基础上又加上了星号,含义再次改变,表示第 1 个二维数组,第 4 行首元素的地址,下标表示法 array[1][4]。
第五题最简单,直接表示第 3 个二维数组第 1 行第 2 个元素,array[3][1][2]。
第六题虽然也有三个星号,但是写法跟上面略有区别。*array 表示第 0 个二维数组首行地址,+1表示第 1 行地址,再加星号,表示第一行首元素地址,加 2 表示第一行第二个元素地址,
最后一个星号就是取值,用下标表示就是array[0][1][2]。
最后三个留给大家练习使用。
在数组和指针的概念中,* 和 [] 有相同的意思,虽然有时候不是真正的取值操作,但是可以改变地址的含义。比如题目中,出现 1 个星号,表示行的地址,出现两个星号,表示元素的地址,出现三个星号,就是具体的元素。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !