Декларација и иницијализација низа

Све низове које ћеш користити у програму прво мораш декларисати, а након тога, низ можеш иницијализовати или касније доделити вредности његовим елементима.

Декларација низа

Општи облик декларације низа изгледа овако:

tip ime[velicina]

tip низа може бити било који целобројни или реални тип података. Ако је тип низа char онда се ради о низу карактера, односно ниски или стрингу, што ће бити тема у другој години учења. ime низа одређује се правилима која се не разликују од правила за именовање идентификатора које си до сада користио. velicina низа је увек целобројна позитивна константа типа int већа од нуле.

Напиши програм у програмском језику C у којем је декларисан једнодимензионални низ arr са пет елемената целобројног типа int.

#include <stdio.h>

int main(void)
{
    int arr[5];
    return 0;
}

У програму је декларисан једнодимензионални низ arr који има пет елемената типа int: arr[0], arr[1], arr[2], arr[3] и arr[4]. Може да се каже и да је једнодимензионални низ arr статички алоциран са пет елемената типа int. Израз статички алоциран користи се да нагласи да је величина низа целобројна константа, што значи да величину низа мораш унапред предвидети у току писања програма, као и да је не можеш мењати у току извршавања програма.

Приметићеш у литератури, да неки аутори користе назив вектор као синоним за једнодимензионални низ у програмском језику C што је погрешно! Назив вектор долази из програмског језика C++ и представља динамички алоцирану библиотечку колекцију података истог типа, што није еквивалентно са статички алоцираним једнодимензионалним низовима у програмском језику C. Алокација низа у тренутку извршавања програма у програмском језику C јесте могућа, али је то напредна тема која се обрађује у другој години учења. Значи, назив вектор не треба користити као синоним за једнодимензионални низ - нема потребе за тим, а може да унесе велику забуну.

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

Иницијализацијом низа елементима низа додељују се конкретне вредности.

Напиши програм у програмском језику C у којем ћеш иницијализовати декларисани низ из претходног задатка. Вредности елемената низа треба да износе: \(10\), \(21\), \(-13\), \(10\) и \(0\).

#include <stdio.h>

int main(void)
{
    int arr[5] = { 10, 21, -13, 10, 0 };
    return 0;
}

Да поновимо опет, вредности се додељују елементима низа, а не самом низу. У примеру изнад, првом елементу arr[0] додељена је вредност 10, другом елементу arr[1] додељена је вредност 21 итд.

Број елемената у витичастој загради мора бити једнак или мањи од задате величине низа. Уколико је број додељених вредности мањи од величине низа, на преостала места постављају се подразумеване вредности које зависе од типа - за целобројне типове то је 0, а за реалне 0.0. Уколико ниси навео вредности за све елементе низа, већ само за одређени број елемената на почетку низа, каже се да је извршена делимична иницијализација низа.

Напиши програм у програмском језику C у којем ћеш делимично иницијализовати декларисани низ из првог задатка. Вредности прва два елемента низа треба да износе: \(10\) и \(21\).

#include <stdio.h>

int main(void)
{
    int arr[5] = { 10, 21 };
    return 0;
}

првом елементу arr[0] додељена је вредност 10 и другом елементу arr[1] вредност 21. Пошто за остале елементе arr[2], arr[3] и arr[4] није наведена вредност, додељена им је вредност 0.

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

То значи да си први задатак могао да решиш на следећи начин:

#include <stdio.h>

int main(void)
{
    int arr[] = { 10, 21, -13, 10, 0 };
    return 0;
}

Сада ће компајлер сâм закључити да је величина низа 5, јер није наведена димензија низа у угластим заградама, а наведено је пет елемената између витичастих заграда.

Вредности елементима низа можеш додељивати и појединачно након декларације.

То значи да си први задатак могао да решиш и овако:

#include <stdio.h>

int main(void)
{
    int arr[5];
    arr[0] = 10;
    arr[1] = 21;
    arr[2] = -13;
    arr[3] = 10;
    arr[4] = 0;
    return 0;
}