C/С++ может ли массив(одномерный и двухмерный) являтся аргументом функции?

программирование C++ массивы


Примечание:
На пример:
const int N=400;
float func (int A[N][N], int c[N])
{
float s;
...
return s;
}

Примечание:
В обоих случаях(int **A и int A[N][N]) компилятор пишет ошибку:
Первый: error C2664: func: невозможно преобразовать параметр 1 из 'int **[400][400]' в 'int **[][400]'
Второй: error C2664: func: невозможно преобразовать параметр 1 из 'int **[400][400]' в 'int **'

Примечание:
ладно, в итоге решил поизвращатся со структурой массива.
Ответы:
Может. Массив это указатель.
2 Amon-Ra:
боюсь ошибиться, но по моему для двумерного массива надо будет писать "int** A", потому что в этом случай будет указатель на массив из int
Запись вида: int arr[N][N] эквивалентна int arr[N * N], с той лишь разницой, что когда компилятор видит arr[i][j], то он сам автоматически преобразует в arr[i * N + j].
int arr[][] так писать нельзя, т.к. компилятор не сможет преобразовать потому что ему неизвестно кол-во столбцов.
В общем в классической книжке Кернигана и Ричи это хорошо описано.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.