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

Есть массив char mass[1024][1024] и функция int fun(char*). При вставке функции fun(mass), компилятор выдаёт предупреждение о несоответствии типов, приходиться приводить тип fun((char*)mass){}или fun((char*)&mass){}. Есть ли возможность для указания статического массива как аргумента? И почему типы разные?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
wisgest
@wisgest
Слесарь холодной обработки металла
Целиком массив в функцию не передаётся (если только не обернуть его в структуру), а передаётся указатель на его 0-й элемент и формальный аргумент функции должен быть указателем на тип элементов массива, передаваемого фактическим аргументом.
n-мерный массив — это 1-мерный массив (n-1)-мерных массивов и, соответственно, формальным аргументом функции должен быть указатель на (n-1)-мерный массив.
В данном случае
int fun(char (*)[1024]);
int fun(char (*m)[1024]) {/*...*/}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Есть массив char mass[1024][1024] и функция int fun(char*)

в такую функцию можно передать fun(&mass[0][0]).

Есть ли возможность для указания статического массива как аргумента?

В смысле массива статической размерности? Легко: int fun(char a[][1000]); ... fun(mass);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
FunBox Томск
от 120 000 ₽
FunBox Екатеринбург
от 120 000 ₽
FunBox Санкт-Петербург
от 120 000 ₽
17 февр. 2020, в 17:35
15000 руб./за проект
17 февр. 2020, в 17:25
10000 руб./за проект
17 февр. 2020, в 17:20
30000 руб./за проект