Дефиниција и иницијализација стринга

Стринг представља низ карактера од нула или више знакова који се завршава null карактером.

Размотримо следећу наредбу:

char ime[8];

Овом наредбом се дефинише низ од 8 елемената типа char.

Како стринг мора да се заврши са ’\0’ карактером, најдужи стринг који може да се упише у низ може да има 7 знакова.

Размотримо следећу наредбу:

char ime[8] = {'M', 'i', 'k', 'a', '\0'};
../_images/image110.png

Ако се у стринг упише име од четири знака, остатак се попуњава празним знацима (null карактером). На исти начин, рецимо, стринг „Zdravo!” се представља као знаковни низ:

../_images/image23.png

Стринг може да се користи као иницијализатор знаковног низа.

char pozdrav[] = "Zdravo!"; 

… је исто што и…

char pozdrav[] = {'Z' , 'd' , 'r' , 'a' , 'v' , 'o' , '!' , '\0' };

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

char niz1[] = {'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'r', 'a', 'n', 'j', 'e'};
char niz2[] = {'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'r', 'a', 'n', 'j', 'e', '\0'};

У чему је разлика између niz1 и niz2?

Разлика између ова два карактера је У null карактеру. niz1 је обичан једнодимензионални низ карактера, док niz2 представља стринг. Дужина знаковног низа не сме да буде мања од дужине стринга увећане за 1 због null карактера. Као што смо видели, низ знакова се може иницијализовати на више начина, нпр…

char poruka1[] = "Pozdrav svima!";

или

char poruka2[15] = "Pozdrav svima!";

Ова два стринга су у меморији смештена на идентичан начин.

../_images/image31.png ../_images/image41.png

Пошто је по дефиницији сâм назив низа показивач, стринг се такође може иницијализовати преко показивача на низ знакова: char *pokPoruka = „Pozdrav svima!”;

../_images/image51.png

Пробај да одредиш који су стрингови исправно иницијализовани и зашто.

1. char niska1[30] = "Dobar dan";

2. char niska2[] = "Dobar dan";

3. char niska3[9] = "Dobar dan";

4.char pozdrav[] = {'Z' , 'd' , 'r' , 'a' , 'v' , 'o' , '!'};

Одговор:

Стринг под 1 је исправно иницијализован – остатак знакова до 30 се попуњава са празним знаковима ’\0’.

Стринг под 2 је исправно иницијализован – компајлер сâм одређује дужину простора за 10 карактера.

Стринг под 3 није исправно иницијализован – недостаје простор за завршни празан знак ’\0’.

Стринг под 4 није исправно иницијализован – недостаје завршни празан знак ’\0’ и зато ово није стринг већ само обичан низ карактера.