返回指向多维数组的指针

时间:2017-07-13 18:41:42

标签: c arrays pointers

假设我正在创建一个多维数组,如下所示。

const int array_temp[3][2][1] = {
    [0] = {{0}, {1}},
    [1] = {{2}, {3}},
    [2] = {{4}, {5}},
};

此数组表示每个表中包含2个条目的3个表。

如何返回指向3个表之一的开头的指针?它会如下吗?

return (void *)&array_temp[idx][0][0];

3 个答案:

答案 0 :(得分:0)

在3D情况下,derefernce指针名称一旦引导我们到Zeroth行。这意味着在解除引用的名称中添加idx会将我们引向第idx行(其中idx> = 0)

return ((*array_temp)+idx);

但请确保您不在函数内声明数组。因为它的持续时间直到功能结束

答案 1 :(得分:-1)

尝试 return array_temp[idx]return array_temp[idx][0][0]将返回特定内容而不是(容器)数组本身。

答案 2 :(得分:-1)

我认为这个例子是不言自明的

#include <stdio.h> 

char arr[4][5][6];



int main(int argc, char *argv[]) {

    printf("%d\n\r", sizeof *(arr));
    printf("%d\n\r", sizeof *(arr[0]));
    printf("%d\n\r", sizeof *(arr[0][0]));
    printf("%d\n\r", sizeof *(&arr));
    printf("%d\n\r", sizeof *(&arr[0]));
    printf("%d\n\r", sizeof *(&arr[0][0]));

}

结果:

30
6
1
120
30
6

没有什么可以补充我认为