Указатели и двумерные массивы в С++
Эффективность работы с двумерными (и многомерными) массивами напрямую связана с тем, как такие массивы технически реализуются в области памяти. Другими словами, для понимания основных механизмов в использовании массивов необходимо иметь четкое представление о при роде массивов в С++. В частности, при работе с двухмерными массивами с успехом могут использоваться указатели. Однако в данном случае принципиально важно помнить о том, что такое на самом деле двумерный массив и как для его элементов в памяти выделяется место. Двумерный массив в С++ - это обычный массив, элементами которого, в свою очередь, являются массивы. Размерность первого, «базового» массива при объявлении определяется числом в первых квадратных скобках, а размерность массивов-элементов - число во вторых квадратных скобках. Таким образом, формально указав имя массива и только первый индекс элемента, получаем ссылку на соответствующую строку двумерного массива. Более точно, название двумерного массива с одним лишь первым индексом есть не что иное, как указатель на первый элемент соответствующей строки массива. Это важное замечание для понимания принципов использования указателей с двумерными (многомерными) массивами. Пример использования указателей при работе с двумерными массивами приведен в листинге.
#includeusing namespace std; int main(){ int n[4][5],*p; for(int i=0; i < 4; i++){ p=n[i]; for(int j=0; j < 5;j++){ *(p+j)=5*i+j+1; printf("%4d",n[i][j]);} printf("\n"); } return 0; }