Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

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

сar_temp_ptr new_car_entry;

new_car_entry = (car_temp_ptr)malloc(sizeof(ELEMENT));

В главе 3, мы описали, как обращаться к различным полям внутри записи. В этом примере, мы инициализируем недавно созданную автомобильную запись с информацией о конкретном автомобиле. Обратите внимание, что мы использовали оператор , чтобы обратиться к специфическому полю внутри структуры.

/* инициализация новых полей для структуры car */

new_car_entry–year = 1981; /* год производства */

strcpy(new_car_entry–make, "Chevy"); /*BWM, Hummer, Saturn */

strcpy(new_car_entry–model, "Camaro"); /*купе, обратимый, SUV, пикап */

strcpy(new_car_entry–VIN, " 12Z3 67"); /* комбинация цифр, букв*/

new_car_entry–mileage = 37456; /*показания спидометра: от 0 до 500,000+ */

new_car_entry–next = NULL; /* определяет указатель на автомобиль */

Чтобы распечатать различные поля записи, мы могли бы использовать следующий код:

printf("\nyear: %4d ", new_car_entry–year); / *year mfg */

printf("\nmake: %s ", new_car_entry–make); /*car делает */

printf("\nmodel: %s ", new_car_entry–model); /*model*/

printf("\nVIN: является ", new_car_entry–VIN); /*VIN */

printf("\nMileage: %6.of ", new_car_entry – mileage); /*odometer reading*/

Поместим все эти части вместе с примером. Мы убедительно просим вас компилировать и выполнить этот код.

#include stdio.h /*стандартные входные/выходные функции*/

#include stdlib.h /*библиотека и распределение памяти */

void main(void) {

 /*определение структуры */

 struct car;

 int year; /*год выпуска */

 char make[10]; /*BWM, Hummer, Saturn*/

 char model[12]; /*купе, обратимый, SUV, пикап */

 char VIN[10]; /*комбинация цифр и букв*/

 float mileage; /*показания одометра: от 0 до 500 000+ */

 struct car *next; /*указатель на следующий автомобиль в списке */

 typedef struct car ELEMENT;

 typedef ELEMENT *car_temp_ptr;

 car_temp_ptr new_car_entry; /*ввод записи для автомобиля*/

 new_car_entry = (car_temp_ptr)malloc(sizeof(ELEMENT));

 /*инициализация новых полей для автомобиля */

 new_car_entry-year = 1981; /*год изготовления*/

 strcpy(new_car_entry–make, "Chevy"); /*BWM, Hummer, Saturn */

 strcpy(new_car_entry–model,"Camaro");

 /* купе, обратимый, SUV, пикап */

 strcpy(new_car_entry–VIN, "12Z3 67");

 /* комбинация цифр и букв */

 new_car_entry–mileage - 37456;/*показания одометра: 0 to 500,000+*/

 new_car_entry–next - NULL; /*указатель на следующий автомобиль в списке*/

 printf("\nyear: %4d", new_car_entry–year); /*год выпуска */

 printf("\nmake: %s", new_car_entry–make) ; /*производитель */

 printf("\nmodel: %s", new_car_entry–model); /*модель */

 printf("\nVIN: %s ", new_car_entry –VIN); /*номер */

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже