Advertisement

多维数组中的指针与下标之间的转换

阅读量:

给出以下陈述

复制代码
    int array[4][5][3];
    
    AI写代码cpp

将以下声明中的各个指针表达式转换为对应的下标表达式形式。

指针表达式 下标表达式
*array
*(array+2)
*(array+1)+4
((array+1)+4)
((*(array+3)+1)+3)
((*array+1)+2)
*(**array+2)
**(*array+1)
***array
  • *array:

array本质上是一个指向三维数组的指针,其定义形式如下:

int (* p) [4][5][3]

该表达式表示对数组第一个元素的间接访问,而数组的起始地址为&array[0]。因此,此处的下标表达方式应为array[0]

  • *(array + 2):

array+2则是一个指向二维数组的指针,其定义如下:

int (*p) [5][3]

在该情况下,将数组地址增加2意味着跳转至第二维空间中的第三行,即&array + 5*3 *2 * 4 = &array + 120。因此起始位置为&array[2],对应的下标表达方式应为array[2]

  • *(array+1

全部评论 (0)

还没有任何评论哟~