diff options
1 files changed, 12 insertions, 9 deletions
| -rw-r--r-- | src/teaching/upp-2023/week5/revision.du | 21 |
diff --git a/src/teaching/upp-2023/week5/revision.du b/src/teaching/upp-2023/week5/revision.du index 37c7c8d..c415f5a 100644 --- a/src/teaching/upp-2023/week5/revision.du +++ b/src/teaching/upp-2023/week5/revision.du @@ -1,4 +1,7 @@ -# Преговор - УПП, Седмица 5, 03.11.2023 +'def title Преговор - УПП, Седмица 5, 03.11.2023 +'def desc Преговор на материала + +# {title} ## Указатели @@ -6,22 +9,22 @@ За да можем да определим къде дадено нещо е запазено, всяка клетка в паметта си има "адрес". Адресът е едно цяло положително число. -Можем да вземем адреса на дадена променлива с оператора [`&`]: +Можем да вземем адреса на дадена променлива с оператора {` &}: ```cpp double a = 3.14159; std::cout << (&a) << std::endl; -Tази програма ще върне адресът на променлива [`a`]. +Tази програма ще върне адресът на променлива {` a}. След като имаме адрес, бихме искали да работим със стойността на този адрес. -Това го правим с дерефериращия оператор [`*`]: +Това го правим с дерефериращия оператор {` *}: ```cpp double a = 3.14159; std::cout << (*(&a)) << std::endl; -Тази програма връща стойността на адреса на променлива [`a`]. +Тази програма връща стойността на адреса на променлива {` a}. Променливи, които съдържат адреси се наричат указатели. Синтаксисът на един указател е: @@ -55,13 +58,13 @@ double *pointer2 = &a; <ТИП> <ИМЕ>[N] = { <СТОЙНОСТ> }; // дефинира всички N елементи със <СТОЙНОСТ> <ТИП> <ИМЕ>[N] = { <СТОЙНОСТ 1>, <СТОЙНОСТ 2>, ..., <СТОЙНОСТ M> }; // където M <= N -Самото [`<ИМЕ>`] е указател, така че може да достъпваме стойности чрез указателна аритметика: +Самото {` <ИМЕ>} е указател, така че може да достъпваме стойности чрез указателна аритметика: ```cpp int arr[2] = { 83, 18 }; std::cout << (*(arr + 1)) << std::endl; -Връща втория елемент, [`18`]. +Връща втория елемент, {` 18}. Или чрез по-приятния синтаксис с квадратни скоби: @@ -69,7 +72,7 @@ std::cout << (*(arr + 1)) << std::endl; int arr[2] = { 83, 18 }; std::cout << (arr[1]) << std::endl; -Двете неща са еквивалентни, тоест [`name[x]`] е еквивалентно на [`*(name + x)`]. +Двете неща са еквивалентни, тоест {` name[x]} е еквивалентно на {` *(name + x)}. Когато един масив съдържа букви, наричаме го "низ" (string). -За да не трябва да следим дължината на един низ в друга променлива и да трябва да я подаваме, винаги завършваме нашия низ на "терминаращата нула" - [`'\0'`]. +За да не трябва да следим дължината на един низ в друга променлива и да трябва да я подаваме, винаги завършваме нашия низ на "терминаращата нула" - {` '\0'}. |