Низови у Ц ++ - Изјави - Иницијализовати - Показивач на примере низа

Преглед садржаја:

Anonim

Шта је низ?

Низ је структура података која узастопно чува елемент истог типа података. Низ Ц ++ има фиксну величину.

Низ можете видети као колекцију променљивих сличног типа података. Уместо да декларишете сваку променљиву и доделите јој вредност појединачно, можете декларисати једну променљиву (низ) и додати јој вредности различитих променљивих. Свака додана вредност низу идентификује се индексом.

У овом упутству за Ц ++ научићете:

  • Шта је низ?
  • Зашто су нам потребни низови?
  • Декларишите низ у Ц ++
  • Иницијализација низа
  • Врсте низова
    • Једнодимензионални низ
    • Мулти-димензионални низ
    • Дводимензионални низ
    • Тродимензионални низ
    • Показивач на низ
  • Приступ вредностима низа
  • Предности низа у језику Ц ++
  • Мане низа у Ц ++

Зашто су нам потребни низови?

Низови су веома важни у било ком програмском језику. Пружају погоднији начин чувања променљивих или колекције података сличног типа података заједно, уместо да их чувају одвојено. Свакој вредности низа ће се приступити одвојено.

Декларишите низ у Ц ++

Декларација низа у језику Ц ++ укључује навођење типа као и броја елемената које ће низ сачувати. Синтакса:

type array-Name [ array-Size ];

Правила за декларисање једнодимензионалног низа у језику Ц ++.

  • Тип: Тип је тип елемената који се чувају у низу и мора бити важећи тип података Ц ++.
  • Арраи-Наме: Арраи-Наме је име које се додељује низу.
  • Арраи-Сизе: Арраи-Сизе је број елемената који ће бити ускладиштени у низу. Мора бити цео број и већи од 0.

На пример, можете створити низ имена аге и сачувати узраст од 5 ученика на следећи начин:

int age[5];

Старост низа ће садржати 5 целих бројева који представљају узраст различитих ученика.

Иницијализација низа

Иницијализација низа је поступак додељивања / чувања елемената низу. Иницијализација се може извршити у једној изјави или једну по једну. Имајте на уму да се први елемент у низу чува под индексом 0, док се последњи елемент налази у индексу н-1, где је н укупан број елемената у низу.

У случају низа узраста, први елемент ће бити смештен у индекс 0, док ће последњи елемент бити смештен у индекс 4.

Искористимо добни низ да покажемо како се може извршити иницијализација низа:

int age[5] = {19, 18, 21, 20, 17};

Укупан број елемената у {} не може премашити вредност наведену у []. Елемент 19 је на индексу 0, 18 на индексу 1, 21 на индексу 2, 20 на индексу 3 и 17 на индексу 4. Ако не наведете број елемената који ће бити сачувани у низу у оквиру [], низ биће довољно велика да садржи елементе додате у {}. На пример:

int age[] = {19, 18, 21, 20, 17};

Горња изјава ће створити потпуно исти низ као и претходни. Такође можете доделити један елемент низу користећи његов индекс. На пример:

age[3] = 20;

Горња изјава ће сачувати вредност 20 у индексу 3 низа именованог аге. То значи да ће 20 бити четврти елемент низа.

Врсте низова

Постоје две врсте низова Ц ++:

  • Једнодимензионални низ
  • Мулти-димензионални низ
  • Показивач на низ

Једнодимензионални низ

Ово је низ у којем су ставке података линеарно распоређене само у једну димензију. Обично се назива 1-Д низ. Синтакса:

datatype array-name[size];
  • Име низа је име низа.
  • Величина је број ставки које треба сачувати у низу.

На пример:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање функције маин () унутар које треба додати логику програма.
  4. Почетак тела главне () функције.
  5. Декларација низа под називом аге за чување 5 целих бројева. 5 целих бројева је такође иницијализовано.
  6. Направите целобројну променљиву к помоћу фор петље.
  7. Почетак тела петље фор.
  8. Коришћење променљиве петље к за прелазак преко вредности старости низа и штампање на конзоли. "\ Н" је знак новог реда и исписује се у новом реду након сваке итерације.
  9. Крај тела петље фор.
  10. Крај тела главне () функције.

Мулти-димензионални низ

Ово је низ у којем су ставке података распоређене да формирају низ низова. Мултидимензионални низ може имати било који број димензија, али су дводимензионални и тродимензионални низови уобичајени. Синтакса:

datatype array-name[d1][d2][d3]… [dn];

Име низа је име низа који ће имати н димензија. На пример:

Дводимензионални низ

2Д низ чува податке на листи са 1-Д низом. То је матрица са редовима и колонама. Да бисте прогласили 2Д низ, користите следећу синтаксу:

type array-Name [ x ][ y ];

Тип мора бити важећи тип података Ц ++. Погледајте 2Д низ као табелу, где к означава број редова, а и број колона. То значи да сваки елемент у 2Д низу идентификујете помоћу облика а [к] [и], где је к број реда, а и број колона у којима елемент припада.

Ево примера како се иницијализује 2Д низ:

int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};

У горњем примеру имамо 2Д низ који се може видети као 2к3 матрица. Постоје 2 реда и 3 колоне. Елементу 0 може се приступити као [0] [1] јер се налази на пресеку реда индексираног 0 и индексираног ступца 1. Елементу 3 може се приступити као [1] [2] јер се налази на пресек реда индексираног 1 и колоне индексираног 2.

Имајте на уму да смо једноставно додали витичасте заграде како бисмо разликовали различите редове елемената. Иницијализација се такође могла извршити на следећи начин:

int a[2][3] = {0, 2, 1, 4, 3, 7};};

Следећи пример Ц ++ показује како се иницијализује и прелази 2Д низ:

#include using namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" <

Излаз:

Ево екрана горњег кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање функције маин () у оквиру које треба додати код.
  4. Почетак тела главне () функције.
  5. Коментар. Компајлер Ц ++ ће ово прескочити.
  6. Декларисање 2Д низа од 3 реда и 2 колоне. Предмети су такође додати у низ.
  7. Коментар. Компајлер Ц ++ ће ово прескочити.
  8. Креирање променљиве и помоћу петље фор. Ова променљива ће се итирати преко индекса редова низа.
  9. Креирање променљиве ј помоћу петље фор фор. Ова променљива ће се поновити преко индекса ступаца низа.
  10. Почетак тела петљи.
  11. Испишите вредности променљивих и и ј на конзоли унутар углатих заграда на конзоли.
  12. Одштампајте вредност сачувану у индексу [и] [ј] низа а.
  13. Крај тела петљи.
  14. Функција маин () треба да врати целобројну вредност ако програм добро ради.
  15. Крај тела главне () функције.

Тродимензионални низ

3Д низ је низ низова. Сваки елемент у 3Д низу идентификован је скупом од 3 индекса. За приступ елементима 3Д низа користимо три фор петље. На пример:

#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";}

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање функције маин () унутар које треба додати логику програма.
  4. Почетак тела главне () функције.
  5. Декларација 3Д низа именованог величине 2к3к2. Вредности низа су такође иницијализоване.
  6. Приступити ставци која је ускладиштена у индексу [0] [1] [0] низа и одштампати је на конзоли.
  7. Приступање ставци која се налази у индексу [0] [1] [1] низа и штампање на конзоли.
  8. Крај тела главне () функције.

Показивач на низ

Показивач је променљива која садржи адресу. Осим коришћења показивача за чување адресе променљиве, можемо га користити за чување адресе ћелије низа. Име низа непрестано показује на његов први елемент. Размотрите изјаву дату у наставку:

int age[5];

Старост је показивач на $ аге [0], адресу првог елемента низа по имену аге. Размотрите следећи пример:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Излаз:

Имајте на уму да прва вредност горе наведеног излаза може вратити различиту вредност у зависности од адресе додељене првом елементу низа у меморији рачунара.

Ево снимка екрана кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање функције маин () унутар које треба додати логику програма.
  4. Почетак тела главне () функције.
  5. Проглашавање променљиве показивача под именом * јохн.
  6. Проглашавање целобројног низа под називом аге за чување 5 целих бројева. Вредности целих бројева такође су иницијализоване.
  7. Додељивање променљивој јохн вредности адресе ставке сачуване у првом индексу старости низа.
  8. Штампање вредности променљиве јохн, која је адреса ставке сачуване у првом индексу старости низа.
  9. Штампање прве вредности сачуване у старости низа.
  10. Крај тела главне () функције.

Имена низа могу се користити као стални показивачи, а обрнуто је такође тачно. То значи да можете приступити вредности сачуваној у индексу 3 старости низа са * (старост + 3). На пример:

#include using namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;}

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање главне () функције и почетак тела главне () функције.
  4. Коментар. Компајлер Ц ++ ће ово прескочити.
  5. Декларација низа под називом аге за чување 5 целих бројева.
  6. Креирање целобројног показивача стр.
  7. Додељивање п вредности адресе првог елемента низа аге.
  8. Коментар. Компајлер Ц ++ ће ово прескочити.
  9. Одштампајте мало текста на конзоли.
  10. Направите цео број к помоћу петље фор. Ознака {означава почетак тела петље фор.
  11. Одштампајте вредности к у комбинацији са неким другим текстом на конзоли.
  12. Одштампајте вредности * (п + к) на конзоли.
  13. Крај тела петље фор.
  14. Одштампајте мало текста на конзоли.
  15. Направите променљиву к помоћу петље фор. Ознака {означава почетак тела петље фор.
  16. Одштампајте вредности к од 0 до 4 уз неки други текст.
  17. Одштампајте вредности * (старост + к).
  18. Крај тела петље фор.
  19. Врати вредност ако се програм успешно изводи.
  20. Крај тела главне () функције.

Приступ вредностима низа

Елементима низа се приступа помоћу њихових одговарајућих индекса. Индекс елемента којем треба приступити додаје се у угластим заградама [] непосредно након имена низа. На пример:

int john = age[2];

У горњем примеру једноставно наводимо да је Јохн-ово доба ускладиштено у индексу 2 низа именованог аге. То значи да је Јохн-ова старост 3. вредност у низу аге. Ево комплетног примера Ц ++ који показује како приступити и одштампати ову вредност:

#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"<

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључујући иостреам датотеку заглавља у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључујући простор имена стд како би користио његове класе и функције без позива.
  3. Позивање функције маин () у оквиру које треба додати код.
  4. Почетак тела главне () функције.
  5. Декларација низа под називом аге за чување 5 целобројних елемената.
  6. Приступање вредности сачуваној у индексу 2 старости низа и чување њене вредности у променљивој која се зове јохн.
  7. Штампање вредности променљиве јохн на конзоли уз други текст.

Предности низа у језику Ц ++

Ево предности и користи употребе Арраи-а у Ц ++:

  • Елементи низа се лако прелазе.
  • Лако се манипулише подацима низа.
  • Елементима низа може се приступити насумично.
  • Низови олакшавају оптимизацију кода; стога можемо обавити много посла користећи мање кода.
  • Лако сортирање података низа.

Мане низа у Ц ++

  • Низ има фиксну величину; стога не можемо додати нове елементе након иницијализације.
  • Додељивање више меморије од захтева доводи до губитка меморијског простора, а мање додељивања меморије може створити проблем.
  • Број елемената који се требају сачувати у низу мора бити унапред познат.

Резиме

  • Низ је структура података која чува елементе истог типа података.
  • Елементи низа се складиште секвенцијално.
  • Елементи низа се означавају помоћу њихових одговарајућих индекса. Први елемент има индекс 0, док је последњи елемент индекс н-1, где је укупан број елемената низа.
  • Декларација низа укључује дефинисање типова података елемената низа као и броја елемената који ће бити ускладиштени у низу.
  • Једнодимензионални низ чува елементе секвенцијално.
  • Дводимензионални низ чува елементе у редовима и колонама.
  • Тродимензионални низ је низ низова.
  • Елементи се могу додати у низ помоћу њихових индекса.
  • Елементима низа се приступа помоћу њихових индекса.
  • Вишедимензионални низ има више димензија.
  • Име низа показује на његов први елемент.
  • Низови имају фиксну величину, што значи да нови елементи не могу бити додати у низ након његове иницијализације.