Top.Mail.Ru
Ответы

Как передавать многомерный массив в функцию на си?

Здравствуйте! Есть трехмерный массив типа char. Пытаюсь его передать в функцию int fun(char*** m), не чего не получаеться! Почему?

По дате
По рейтингу
Аватар пользователя
Новичок

Не много подзабыл мат. часть но примерно так выглядит передача массива 3-й размерности, только не ругайся на макросы и значение контрольного эллемента это всего лишь ссылка на указатель в оперативной памяти! Си держит свою марку! По возможности, не создавай массивы "глубокой" размерности-это потеря быстродействия!

12345678910111213141516171819202122232425262728
 #include<stdio.h> 
 
#define LEN_A 32 
#define LEN_B 256 
#define LEN_C 12 
#define LEN_D 128 
#define LEN_E 2 
 
#define CUR_A 10 
#define CUR_B 10 
#define CUR_C 8 
#define CUR_D 52 
#define CUR_E 1 
 
int fun(char *m) 
{ 
        char *p=&m[CUR_A*LEN_B*LEN_C+CUR_B*LEN_C+CUR_C]; 
        *p=12; 
        printf("%d\n",p); 
 
} 
 
int main() 
{ 
        char mass[LEN_A][LEN_B][LEN_C]; 
        mass[CUR_A][CUR_B][CUR_C]=25; 
        fun((char*)&mass); 
        printf("%d\n",&mass[CUR_A][CUR_B][CUR_C]);