Хочу получить удостоверение. Сколько стоит оплата? |
Опубликован: 10.12.2015 | Уровень: для всех | Доступ: платный
Лекция 17:
Использование указателей на структуры
< Лекция 16 || Лекция 17 || Лекция 18 >
Использование указателей на структуры значительно расширяет возможности использования массивов структур, в частности, создание связанных списков, сортировка структур и т.д. (об этом речь пойдет позже). Доступ к отдельным элементам структуры осуществляется с помощью оператора "стрелка" (arrow).
Следующая программа иллюстрирует сказанное. Переменная-массив foliant[m] и указатель *manuscript связаны со структурой следующим оператором:
struct book foliant[m], *manuscript;
Адрес массива foliant копируется в переменную-указатель *manuscript при помощи оператора:
manuscript=&foliant[0];
//========================================================== // Name : struct_card.cpp // Author : Marat // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //========================================================== #include <iostream> using namespace std; #define n 50 #define m 20 char newline; int i, array_size; struct book{char author[n]; char titel[n]; int year; }; int main() { void print(struct book *any_book); struct book foliant[m], *manuscript;//Указатель на структуру manuscript=&foliant[0]; cout<<"\nHow many book in your library? "; cin>>array_size; for(i=0;i<array_size;i++) { cin.get(newline); cout<<"\nInput #"<<i+1<<" author's name, please "; cin.get(manuscript->author,49); cin.get(newline); cout<<"\nInput #"<<i+1<<" book's titel, please "; cin.get(manuscript->titel,49,'\n'); cin.get(newline); cout<<"\nInput #"<<i+1<<" appearance year, please "; cin>>manuscript->year; manuscript++; } manuscript=&foliant[0]; print(manuscript); return 0; } void print(struct book *any_book) { for(i=0;i<array_size;i++) { cout<<"\n#"<<i+1<<" author's name is "<<any_book->author; cout<<"\n#"<<i+1<<" book's titel is "<<any_book->titel; cout<<"\n#"<<i+1<<" book's appearance year is "<<any_book->year; any_book++; } cout<<"\n"<<endl; }
Результат:
How many book in your library? 2 Input #1 author's name please Raymond Murphy Input #1 book's titel please English Grammar in Use Input #1 appearance year please 1996 Input #2 author's name please Klaus Ebert Input #2 book's titel please Komputereranwendungen in der Chemie Input #2 appearance year please 1985 #1 author's name is Raymond Murphy #1 book's titel is English Grammar in Use #1 book's appearance year is 1996 #2 author's name is Klaus Ebert #2 book's titel is Komputereranwendungen in der Chemie #2 book's appearance year is 1985
< Лекция 16 || Лекция 17 || Лекция 18 >