Динамикалық матрица дегеніміз, әрқайсысы бір жолды (немесе бір бағанды) адрестейтін көрсеткіштер массиві.
Динамикалық матрицаның сипатталуын қарастырайық. Мәліметтер типі massiv және оған көрсеткіш din_massiv берілген болсын.
Type massiv=array[1..1000] of real;
Din_massiv=^massiv;
бос массивтің соңына 5 элементін қосады, осылайша оның өлшемін 0-ден 1-ге дейін арттырады.
Динамикалық массив - элементтердің саны және оған сәйкес бөлінген жад көлемі инициализация кезінде де, онымен жұмыс істегенде де өзгеруі мүмкін. Қатаң айтқанда, мұндай массив C++тілінде іске асырылмаған. Динамикалық массивтің бірқатар функциялары бар оның кейбір алмастыруы бар.
Массивті осылайша жариялайды:
int a;
a = 7;
int *mas = new int[a];
int a;
a = 7;
int *mas = new int[a];
Осындай конструкцияның арқасында кез келген өлшемнің массивін бастамалауға болады, бірақ жұмыс барысында оған бөлінген жадының көлемін өзгерту мүмкін емес. Сіз тек массивтің орнын толығымен босата аласыз. Бұл delete функциясы арқылы жасалады. Біздің мысал үшін бұл көрінеді
delete [] mass;
delete [] mass;
Оператор алдында жақшалар міндетті, олар айнымалы емес, массивтің жойылатынын көрсетеді.
Динамикалық бір өлшемді массив қана емес, екі өлшемді және одан да жоғары. Мысалы, екі өлшемді динамикалық массив:
int a = 2;
int b = 3;
float * * ptrarray = new float* [a]; / / инициализация
for (int count = 0; count < a; count++)
ptrarray[count] = new float [b];
for (int count = 0; count < a; count++) / / жад босату
delete [] ptrarray[count];
delete [] ptrarray;
int a = 2;
int b = 3;
float * * ptrarray = new float* [a]; / / инициализация
for (int count = 0; count < a; count++)
ptrarray[count] = new float [b];
for (int count = 0; count < a; count++) / / жад босату
delete [] ptrarray[count];
delete [] ptrarray;
Динамикалық массивтің элементіне әдеттегі массивтің элементіне де жүгінуге болады:
a[i] = 5;
ptrarray[1][2] = 4;
a[i] = 5;
ptrarray[1][2] = 4;
Сонымен қатар, толық динамикалық массивтің кейбір баламасы vector нысаны болуы мүмкін. Ол кәдімгі c ++ массивтерінің функционалы бар, бірақ оған жаңа элементтерді қосу кезінде өлшемін өзгерте алады. Мысалы,
vector mV;
mV.push_back(5);
vector mV;
mV.push_back(5);
Компилятор айнымалыны анықтау операторын өңдеген кезде мысалы int i=5; int типке сәйкес жады бөлінеді және көрсетілген мәнге меншіктейді. Программадағы айнымалыны оның аты ( i ) арқылы шақыру компилятор мен айнымалының мәні сақталатын жады аймағының адресіне ауыстырылады. Программалаушы жады аймағының адресін сақтау үшін жеке меншік айнымалыларды анықтауына болады. Бұндай айнымалылар көрсеткіштер деп аталады. Сонымен көрсеткіштер жады аймағының адресін сақтауға арналған.
С++ -те көрсеткіштердің үш түрі бар. Олар:
объектілерге арналған көрсеткіштер.
функцияларға арналған көрсеткіштер.
қасиеттерімен және амалдар жиынтығымен ерекшеленетін void-қа арналған көрсеткіштер .
Көрсеткіштер өз алдында жеке дара тип болып табылмайды. Олар әрқашанда қандай да бір нақты типпен байланысты болады. Функцияның атқарылатын коды орналасқан код сегментінде функцияға арналған көрсеткіштің адресі болады, яғни ол функцияны шақырғанда басқару берілетін адрес.
Достарыңызбен бөлісу: |