C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

C struct. Покажчики на структури


На структури, як і на об'єкти інших типів, можна визначати покажчики. Наприклад, покажчик на структуру person:

struct person *p;

Покажчики на структури можна створювати і для безіменних структурних типів:

struct
{
    int age;
    char name[20];
} *p1, *p2;

Як значення такого вказівником присвоюється адреса об'єкта структури того ж типу:

struct person kate = {31, "Kate"};
struct person *p_kate = &kate;

Використовуючи покажчик на структуру, можна отримати доступ до її елементів. Для цього можна скористатися двома способами. Перший спосіб являє застосування операції разименованія:

(*указатель_на_структуру).имя_элемента

Другий спосіб передбачає використання операції -> (операція стрілка):

покажчик_на_структуру->імя_елемента

Використовуємо обидва ці способи для звернення до елементів структури:

#include <stdio.h>
 
struct person 
{
    int age;
    char name[20];
};
 
int main(void)
{
    struct person kate = {31, "Kate"};
    struct person * p_kate = &kate;
     
    char * name = p_kate->name;
    int age = (*p_kate).age;
     
    printf("name = %s \t age = %d \n", name, age);
     
    // изменим элемент age в структуре
    p_kate->age = 32;
    printf("name = %s \t age = %d \n", kate.name, kate.age);
    return 0;
}

Тут визначається покажчик p_kate на змінну kate . І використовуючи покажчик, ми можемо отримати або змінити значення елементів структури.


Наш партнер:
beta test mp3 playlist downloader