АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

УКАЗАТЕЛИ И МНОГОМЕРНЫЕ МАССИВЫ

Читайте также:
  1. VI. Сигнальные указатели и знаки на транспорте
  2. Вопрос 50. Для чего применяются маршрутные световые указатели?
  3. Динамические массивы
  4. Идентификаторы, переменные, массивы
  5. Массивы и переменные с индексами.
  6. Массивы, векторы и матрицы
  7. Массивы.
  8. Многомерные массивы
  9. Последовательности, списки, множества. Массивы. Вектора.
  10. Световые указатели сохраняют сигнальные значения и в погашенном состоянии.
  11. СВОБОДНЫЕ МАССИВЫ И УКАЗАТЕЛИ
  12. Указатели

Многомерный массив в С – это массив массивов. Например:

 

int mas[ m ][ n ][ k ];

 

Можно сказать, что объявлен одномерный массив из m элементов, каждый элемент которого является двумерным массивом, содержащим n*k элементов. В памяти это массив будет расположен так:

       
   


m массивов n*k

 

 

Двумерный массив n*k, в свою очередь, расположен в памяти по строкам:

       
   


n строк (одномерных массивов по k элементов в каждом)

 
 

 

 


первая строка вторая строка n– ая строка

 

 

Наиболее часто в программах уаотребляются двумерные массивы, плзволяющие обрабатывать данные, пердставленные в табличной форме. Например, если объявлен двумерный массив

 

int a[ 5 ] [ 4 ];

 

то это объявление можно рассматривать как объявление одномерного массива а, состоящего из пяти элементов, каждый элемент которого, в свою очередь, состоит из четырех элементов.

Имя массива а – это указатель на одномерный массив целых из пяти элементов, каждый из которых содержит адрес соответствующей строки массива. Значение а - адрес первой строки массива.

 

Так как имя двумерного массива является указателем на массив, то его можно проиндексировать:

 

a[0] – это адрес строки с индексом 0,

a[1] – это адрес строки с индексом 1,

a[2] – это адрес строки с индексом 2,

a[3] – это адрес строки с индексом 3,

a[4] – это адрес строки с индексом 4.

 

Это означает, что каждый элемент массива а указывает на соответствующую строку, что схематично можно отобразить так:

 

 
 


a[0]

 

a[1]

 

a[2]

 

a[3]

 

a[4]

 

 

Так как a[0] – это адрес строки с индексом 0, а a[i] – это адрес строки с индексом i, то можно записать:

 

a [0] = & a [0] [0]; …. a[i] = & a[i] [0];

 

Но а[i] эквивалентно *(a + i) - это адрес строки с индексом i, он смещен от адреса начала на

i * 4*sizeof (int) байт, (4 –это количество элементов в строке, или столбцов матрицы).

 

Для получения адреса элемента двумерного массива, находящегося в строке с индексом i и столбце с индексом j следует к адресу строки матрицы добавить смещение элемента по строке:

 

*(a + i) + j - это то же, что и & a [ i ] [ j ]

 

Для получения значения элемента двумерного массива, находящегося в строке с индексом i и столбце с индексом j следует к адресу элемента применить операцию разадресации:

 

* (*(a + i) + j) - это то же, что и a [ i ] [ j ]

 

В общем случае вычисление смещения элемента двумерного массива, объявленного как

a [ m ] [ n ] следует выполнять по фомуле:

 

n * i + j, где

n – количество столбцов массива (или элементов в строке);

i – текущий индекс строки;

j– текущий индекс столбца.

 


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)