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

Есть массив char mass[1024][1024] и функция int fun(char*). При вставке функции fun(mass), компилятор выдаёт предупреждение о несоответствии типов, приходиться приводить тип fun((char*)mass){}или fun((char*)&mass){}. Есть ли возможность для указания статического массива как аргумента? И почему типы разные?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 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);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Quiet Media Москва
от 100 000 до 160 000 руб.
Eltex Новосибирск
от 80 000 руб.
JetBrains Санкт-Петербург
от 200 000 руб.
18 янв. 2020, в 09:01
3500 руб./за проект
18 янв. 2020, в 08:49
60000 руб./за проект
18 янв. 2020, в 08:36
16000 руб./за проект