Хорошо, у меня есть многомерный массив, который статически размещен. Я бы очень хотел получить указатель на его часть и использовать этот указатель для доступа к остальной части. По сути, я хотел бы иметь возможность сделать что-то вроде этого:
#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, поэтому он будет мучительно трудным долго индексировать массив в реальном коде. Я бы очень хотел иметь указатель на массив для использования, чтобы доступ к массиву был гораздо менее болезненным. Но я не могу понять правильный синтаксис - если таковой вообще есть. Таким образом, любая помощь будет оценена. Благодаря.