| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Передача массива в функцию |
| Автор: alexeev 5.9.2013, 08:48 | ||
| Здравствуйте, получается следующая ситуация: Есть функция объявленная следующим образом:
Функция вызывается дважды, в одном месте с переменной a[5][100], где все нормально, и в другом, где a[5][98], на эту строчку компилятор ругается. Почему? Ведь фактически мы ждем массив большего размера... |
| Автор: feodorv 5.9.2013, 09:01 | ||
Компилятор - молодец! Где ждём? В function()? А если у Вас в function() встретится конструкция вида
|
| Автор: feodorv 5.9.2013, 16:06 |
| Учтите так же, что двумерный массив a[5][100] представляет собой единый участок памяти размером sizeof(a) * 5 * 100 байт (в сущности это одномерный массив ptr[5*100]), и местоположение элемента a[i][j] компилятор рассчитывает исходя из числа элементов строки (ptr[j+i*100]). Если определён другой массив aa[5][98], то для одних и тех же индексов i и j местоположение элемента a[i][j] относительно начала массива (то есть i+j*100) будет иным нежели для элемента aa[i][j] (то есть i+98*j). Иными словами это два разных массива с точки зрения доступа к элементам. |