假设我正在创建一个多维数组,如下所示。
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];
答案 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
没有什么可以补充我认为