Массивті функцияға қалай беру керек

Мазмұны:

Массивті функцияға қалай беру керек
Массивті функцияға қалай беру керек

Бейне: Массивті функцияға қалай беру керек

Бейне: Массивті функцияға қалай беру керек
Бейне: Өзіңіз жасайтын сүлгілерді кептіргішпен ауыстыру 2024, Мамыр
Anonim

Массивтер - бұл компьютерлік бағдарламаларда деректерді сақтаудың құрылымдық формаларының көп қолданылатын түрі. Оларды өңдеуді сынып әдістері мен функцияларында жүзеге асырылған әр түрлі алгоритмдер арқылы жасауға болады. Тиісінше, көбінесе функцияға массив беру қажет. C және C ++ тілдері бұл әрекетті орындау әдістерін таңдауда үлкен еркіндік ұсынады.

Массивті функцияға қалай беру керек
Массивті функцияға қалай беру керек

Бұл қажетті

С және С ++ тілдерінің компиляторлары

Нұсқаулық

1-қадам

Функцияға бекітілген өлшемді массивті жіберіңіз. Сәйкес типтегі аргументті болу үшін функцияның прототипін өзгертіңіз. Мысалы, параметр ретінде үш элементтің бүтін сандық мәндерінің жиымын қабылдайтын функцияның жариялануы келесідей болуы мүмкін:

void ArrayFunction (int aNumbers [3]);

Мұндай функция аргумент ретінде массивті тікелей оған жіберу арқылы аталады:

void SomeFunction ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers);

}

Берілген деректер стекке көшіріледі. Массивті шақырылған функцияда өзгерту көзді өзгертпейді.

2-қадам

Функцияға айнымалы ұзындық массивтерін жіберіңіз. Ол үшін сәйкес аргументтің өлшемін көрсетпеңіз:

void ArrayFunction (int aNumbers );

Көпөлшемді жиымдарды да осыған ұқсас жолмен беруге болады (тек бірінші «өлшем» айнымалы болуы мүмкін):

vray ArrayFunction (int aNumbers [3] [2]);

Бұл функциялар бірінші қадамдағы сияқты аталады.

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

3-қадам

Массивті меңзер арқылы өткізіңіз. Функция аргументі массив элементтеріне сәйкес типі бар мәнге нұсқаушы болуы керек. Мысалға:

void ArrayFunction (int * pNumbers);

Функциядағы деректерге қол жеткізуді массив элементтерімен жұмыс жасау белгісінде де, мекен-жай арифметикасы арқылы да жүзеге асыруға болады:

void ArrayFunction (int * pNumbers)

{

pСандар [0] = 10; // 0 элементіне қол жеткізу

* (pСандар + 1) = 20; // 1-тармаққа қол жеткізу

}

Сақ болыңыз! Функция берілгендердің көшірмесі емес, оған нұсқағыш берілгендіктен, бастапқы массив өзгертіледі.

Бұл әдістің артықшылығы жылдамдық, есептеу ресурстарының үнемділігі және белгілі бір икемділік. Сонымен, мақсатты функцияны жиымның ерікті элементіне көрсеткішті беру арқылы шақыруға болады:

void SomeFunction ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers); // бүкіл массив

ArrayFunction (& aNumbers [1]); // екінші элементтен басталады

}

Бұл әдіс, әдетте, қол жетімді элементтердің санын қосымша параметрге жіберуді немесе массивтің терминаторын қолдануды қамтиды.

4-қадам

Параметрі бар функцияға деректерді беру немесе массивтің функционалдығын жүзеге асыратын класс объектісіне сілтеме. Мұндай сыныптар немесе сынып шаблондары, әдетте, танымал кітапханалар мен құрылымдарда кездеседі (Qt-те QVector, MFC-де CArray, STL:: вектор және т.б.).

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

бос ArrayFunction (QVector oArray)

{

int nItemCount = oArray.count ();

int nItem = oArray [0];

}

void SomeFunction ()

{

QVector oArray (10);

үшін (int i = 0; i

Ұсынылған: