【发布时间】:2010-08-25 10:18:02
【问题描述】:
好的,我有一个静态分配的多维数组。我非常想获得一个指向其中一部分的指针,并使用该指针来访问它的其余部分。基本上,我希望能够做这样的事情:
#include <stdio.h>
#include <string.h>
#define DIM1 4
#define DIM2 4
#define DIM3 8
#define DIM4 64
static char theArray[DIM1][DIM2][DIM3][DIM4] = {0};
int main()
{
strcpy(theArray[0][0][0], "hello world");
char** ptr = theArray[0][0];
printf("%s\n", ptr[0]);
return 0;
}s
此代码使用 gcc 导致此错误:
t.c: In function ‘main’:
t.c:17: warning: initialization from incompatible pointer type
char** 显然不是在这里使用的正确类型。我认为这是因为静态分配的数组在内存中创建为单个块,而动态分配的数组在内存中是分开的,每个维度都有一个指向下一个维度的指针。
但是,正如您可能注意到的那样,这里的维数非常大,而且我显然需要使用实际变量来索引数组而不是漂亮、纤细的字符 0,所以它会变得非常痛苦long 在实际代码中索引数组。我非常希望有一个指向要使用的数组的指针,这样访问数组就不会那么痛苦了。但我无法弄清楚正确的语法 - 如果有的话。因此,任何帮助将不胜感激。谢谢。
【问题讨论】: