Вказівники 1. 2. 3. 4. 5. 6. 7. 8. int* i; double *f, *ff; //два вказівника char* c; int** a; int i; //ціла змінна const int ci=1; //ціла константа int* pi; //вказівник на цілу змінну const int* pci; // вказівник на цілу константу
Ініціалізація вказівників 1. Присвоєння вказівнику адреси об’єкта. 2. за допомогою операції отримання адреси (&): int c=10; int* p=&c; int* p (&c); • за допомогою значення іншого ініціалізованого вказівника: int* r=p; • за допомогою імені масиву або функції, які вважаються адресою: int b[10]; int* t=b; void f(int a){/*…*/} void (*pf) (int); pf=f;
2. Присвоєння вказівнику адреси області пам’яті у явному вигляді: char* vp = (char *)0 x. B 8000000; 3. Присвоєння порожнього значення: int* vk = NULL; int* err = 0; 4. Виділення ділянки динамічної пам’яті і присвоєння її адреси вказівнику: int* n = new int; int* q = new int (10); int* m = new int [10];
int *(*p[10])(); - визначається масив із 10 вказівників на функції без параметрів, що повертають вказівники на int *(*p[10])() 5 4 2 1 3 ← порядок інтерпретації опису
Посилання • Посилання є псевдонімом (синонімом) імені, що вказується підчас ініціалізації посилання. тип & ім‘я; int kol; int& pal = kol; const char& c = ‘t’;
• Після ініціалізації посиланню не може бути просвоєна інша змінна; • Тип посилання повинен співпадати з типом величини, на яку вона посилається; • Не можна визначати вказівники на посилання, створювати масиви посилань і посилання на посилання. • Змінна-посилання повинна явно ініціалізуватися під час її опису, крім тих випадків, коли вона є параметром функції, описана як extern або посилається на поле даних класу.
Масиви <тип> <ідентифікатор> [<розмір>] <розмір> – тільки ціла додатня константа або константний вираз. Якщо розмір відсутній, то повинна бути ініціалізація. int nom[] = {3, 4, 5, 1, 4}; int b[10] = {-10, 7, 5, -2, 1}; int a[100]; int k=sizeof(a); int n=sizeof(a)/sizeof(a[0]);
Результатом операції & є адреса нульового елемента масиву: ім’я_масиву==&ім’я_масиву[0] Ім’я масиву – це вказівник- константа, який вказує на перший елемент масиву (зберігає його адресу). До елемента масиву можна отримати доступ: ім’я_масиву[індекс]; *(ім’я_масиву+індекс); Наприклад: for(int i=0; i