Використання покажчиків на структуру, програмування на c і ​​c

struct bal float balance;
char name [80];
> Person;

Для доступу до членів структури за допомогою покажчика на структуру слід використовувати оператор "стрілка". Оператор "стрілка", ->, утворений з знака "мінус" і символу "більше". Наприклад, для доступу до члена balance за допомогою p слід написати:







Щоб зрозуміти способи використання покажчиків на структури, розглянемо наступну просту програму, що виводить годинник, хвилини, і секунди, використовуючи програмний таймер. (Швидкість роботи таймера можна регулювати, змінюючи макроозначень DELAY.)

/ * Відображення програмного таймера. * /
#Include
#include
#define DELAY 128000
struct my_time int hours;
int minutes;
int seconds;
>;

void update (struct my_time * t), display (struct my_time * t);
void mydelay (void);

int main (void)
struct my_time systime;
systime.hours = 0;
systime.minutes = 0;
systime.seconds = 0;
for (;;) update (systime);
display (systime);
if (kbhit ()) return 0;
>
>

void update (struct my_time * t)
t-> seconds ++;
if (t-> seconds == 60)
t-> seconds = 0;
t-> minutes ++;
>
if (t-> minutes == 60)
t-> minutes = 0;
t-> hours ++;
>
if (t-> hours == 24) t-> hours = 0;
mydelay ();
>

void display (struct my_time * t)
printf ( "% 02d:", t-> hours);
printf ( "% 02d:", t-> minutes);
printf ( "% 02d \ n", t-> seconds);






>

void mydelay (void)
long int t;
for (t = 1; t>

Оголошується глобальна структура my.time. У функції main () оголошується і инициализируется значенням 00:00:00 структурна змінна systime типу my_time. Це означає, що systime відома тільки функції main ().

Наприклад, для установки годин в 0, коли досягається 24:00:00, використовується наступний оператор.

if (t-> hours == 24) t-> hours = 0;

ПАМ'ЯТКА: Для доступу до членів структури при роботі з самою структурою використовується оператор «точка». При зверненні до структури за допомогою покажчика використовується оператор «стрілка».

Як останній приклад використання покажчиків на структури розглянемо програму, яка ілюструє застосування функції цілочисельного введення. Функція input_xy () визначає координати х і у, в яких буде виводитися підказка, а потім вводить цілочисельне значення. З цією метою вона використовує структуру xyinput.

/ * Приклад узагальненого введення за допомогою покажчиків на структури. * /

#include
#include
#include

struct xyinput int x, у; / * Положення підказки на екрані * /
char message [80]; / * Підказка * /
int i; / * Введене значення * /
>;

void input_xy (struct xyinput * info);

int main (void)
struct xyinput mess;
mess.x = 10;
mess.у = 10;
strcpy (mess.message, "Enter an integer:");
clrscr ();
input_xy (mess);
printf ( "Your number squared is: ..", mess.i * mess.i);
return 0;
>

/ * Висновок повідомлення про підказкою у зазначеній позиції і введення цілочисельного значення * /
void input_xy (struct xyinput * info)
gotoxy (info-> x, info-> y);
printf (info-> message);
scanf ( ".", info-> i);
>

Програма використовує функції clrscr () і gotoxy () для очищення екрану і позиціонування курсору відповідно. Обидві функції використовують заголовки conio.h Функція типу input_ху () корисна, коли програма виводить різні шматки інформації. (Фактично, можна створити кілька функції типу input_xy (), які вводять інші типи даних.)







Схожі статті