Көп өлшемді массивтерге нұсқаушылар


Си тілінде көп өлшемді массивтерге нұсқауыштар – ол массивтердің массивтері, яғни, элементтері массив болатын массивтер. Бұндай массивтерді жариялауда компьютердің жадысында әр түрлі обьектілер пайда болады. Мысалы, int arr2[4][3]  екі өлшемін жариялағанда жадыда төрт нұсқаушыдан тұратын массивке нұсқаушы болып табылатын , arr айнымалысының мәнін сақтауға арналған орын бөлінеді. Төрт нұсқаушылы массиыке де орын бөлінеді. Бұл төрт нұсқаушының әрқайсысы int типті үш элементтен тұратын мссив адресінен тұрады  Сөйтіп, arr2[4][3] жариялануы программада үш түрлі обьект тудырады: arr идентификаторымен нұсқауыш, төрт нұсқауыштан тұратын атсыз массив және int типті он екі саннан тұратын атсыз массив. Атсыз  массивтерге рұқсат алу үшін arr нұсқаушысымен адрестік өрнек қолданылады. Нұсқаушылар массиві элементтеріне  рұқсат алу arr2[2] немесе *(arr2+2)  түрінде  бір индекстік өрнекті көрсету арқылы жүзеге асады. Int типті сандық екі өлшемді массив элементтеріне рұқсат алу үшін екі индекстік өрнек  int  түрінде немесе оған эквивалентті  *(*(arr2+1)+2) және (*(arr2+1))[2] түріндегі қолданылуы мүмкін.

Тіл синтаксисіне сәйкес arr  нұсқауышы және arr[0], arr[1], arr[2], arr[3] нұсқауыштары тұрақты болып табылады, оның мәнін өрнектерде қолдануға болады, бірақ, бұл мәндерді программаның орындалу барысында өзгертуге болмайды.

Көп өлшемді массив элементтері жадыда жол бойынша ретпен орналасады, яғне, соңғы индексі жылдам өзгереді, ал біріншісі баяу өзгереді. Бұндай реттілік  көп өлшемді массивтің кез келген элементіне оның бастапқы элементінің  адресі мен  тек бір индекстік өрнекті қолдану арқылы рұқсат алуға мүмкіндік береді.

Мысалы, arr2[1][2] элементіне рұқсат алу int *ptr2=arr2[0]  түрінде жарияланған,  ptr2 нұсқаушысының көмегімен жүзеге асады.  Ішкі ұқсас arr2[6] рұқсат алуын орындау мүмкін емес, себебі 6 индексті нұсқаушы жоқ.