Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

Массивы строк.

Организуются также как и массивы др. типа.

Char name [ 10 ] [ 20 ];

строки Max число симв. в строке

Язык CI позволяет вводить и выводить строки целиком:

Gets () – Ввод

Puts () – Вывод

# include < stdio.h >

main ()

{

char name [ 10 ] [ 20 ];

int index;

for ( index = 0; index<10; index++);

gets ( name [ index ] );

for ( index = 0; index<10; index++)

puts ( name [ index ] );

return 0;

}

Массивы – указатели.

Массивы могут иметь любой тип, в т. ч. они м. б. указателями ( для компактного располож. в памяти строк и структур – удобны для динамич. выделения памяти)

Массив – указатель д. б. описан ( при описании может выполняться иниц – ия его эл-ов )

Char *messages [ 10 ];

Указатель из массива содержит адрес первого эл-та строки. Часто массивы иниц-ся:

Char *messages [] = { “ Не открыт файл ”, “ Ошибка диска ”, ” Ошибка ввода ”, ” Тайм – аут ” };

Типы, определяемые пользователем.

Переименование типов:

Typedef – ключ. слово позволяет присвоить базовому типу новое имя.

Typedef тип новое_имя_типа;

Байт – 8 бит – unsigned char

Слово – 16 бит – 32 бита – unsigned long

…..

typedef unsigned char BYTE;

typedef unsigned int WORD;

typedef unsigned long DWORD;

….

BYTE b1,b2, b3;

…..

WORD w1, w2;

Структуры:

Структурой или структ. переменной наз. объединение одной или более переменных, возможно разных типов, имеющей одно имя, отдельные составные части структ. переменной наз. полями.

1. Обозначается место в памяти, где распологаются инф-ция – это место наз. структ. переменной.

2. Правило формирования структ. переменной, кот. используется компилятором для выделения области в памяти и организации обращения к ее памяти: это наз. шаблонами.

Структ. переменная д. б. описана:

1.Задание шаблона структуры.

2.Собственно описание структ. переменной.

Синтаксис задания шаблона:

Struct имя_шаблона

{

тип 1 имя_поля;

тпп 2 имя_поля;

….

Тип n имя_поля;

};

struct BOOK

{

char name [ 20 ]; // ФИО автора

char title [ 44] ; // Название

int gear; // Год издания

float price; // Цена

};

Указание шаблона не приводит к выделению памяти.для выдел. памяти надо определить структ. переменную ( тип определяется шаблоном )

Struct BOOK dog_book;

20+44+2+4=70 байт

sizeof ( struct BOOT ) – возвратит результат 70 байт.

Доступ к памяти структуры производится с помощью операции ‘ .’

Сначала указ.

Имя структ. переменная . имя поля

Dog_book . gear = 1998;

Strcpy ( dog_book . title, “ Белый Бим Черное ухо” );

Разрешается выполнять иниц-ию структурной переменной.

Struct BOOK dog_book = { “ Траепольский Г.Н. ”,” Белый Бим Черное Ухо”, 1980,2,78};

Typedef struct

{ ;

char name [ 20 ];

char name [ 44 ];

int gear;

float price;

}BOOKS;

BOOKS dog_book; child_book;

Указатели на структурную переменную.

Typedef struct

{

char name [ 20 ];

char title [ 44 ];

int gear;float price;

}BOOKS;

main ()

{

BOOKS first_book, *ptr;

Ptr = & first_book;

First_book = gear = 1992;

Strcpy ( first_book = name, “ Толстый Л.Н. ”)ж

….

Массивы структурных переменных.

Typedef struct

{

char name [ 20 ];

char title [ 44 ];

int gear;

float prite;

}BOOKS;

BOOKS library [ 50 ];

Int index;

Library [ index ]. Gear = 1990;

BOOKS *ptr;

Ptr = & library;

( ptr + index ) – gear = 1992;

Использование структур в функциях.

1.Передача по значению при вызове ф-ии пар-ры записываются в стек, при выходе из ф-ции – пар-ры восстанавливаются.

2.По ссылке ( использование указателей ) в ф-цию, передается только адрес структуры.

Недостаток – ф-ция может изменить данные.

Достоинство – быстрая работа.

2. # include < stdio.h >

# include < string.h >

typedef struct

{

….

}BOOKS;

void example ( BOOKS *first );

main ()

{

BOOKS ret;

Example ( & ret );

Printf ( “ % -20s % -40; Год издания % d, Цена -%2а”, ret – name, ret – title, ret – gear, ret – price );

Return 0;

}

void example ( BOOKS * first )

{

strcpy ( first – name, “ Толстой Л.Н. ” );

strcpy ( first – title, “ Крайцерова соната ” );

first – year = 1990;

first – price = 5.25;

На экране: Толстой Л.Н. Крайцерова соната год издания 1990 цена 5,25