Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_otvyty.docx
Скачиваний:
2
Добавлен:
04.08.2019
Размер:
100.42 Кб
Скачать

Билет 54. Обращение к полям структуры. Массивы структур

На счет полей структуры было сказано билетом выше.

!! Точка – операция принадлежности структуре.

!! Если структура объявлена через указатель, то вместо точки используется стрелка (->) для обращения к полю структуры

Теперь о массивах структур.

Объявление массива структур ничем не отличается от объявления обычного массива. Сам массив можно рассматривать как 2-мерный массив, где столбцы – поля структуры, а строки – сами структуры. Операции те же и выполняются так же, как и при работе с обычными массивами.

Пример: struct Books book[5]={{"TITLE","AUTHOR"},{"Title","Author "}}; //заполнятся 2 поля массива, соответственно 0 и 1 поля.

Билет 55. Использование структур при работе с функциями. Указатели на структуры

Частично этот вопрос был рассмотрен в билете 53, а именно пример указателя. Впрочем, указатели на структуры такие же, как и на любые другие объекты. Также можно сделать указатели на отдельные поля структуры и таким образом получать к ним прямой доступ.

При использовании структур в функциях можно передавать как всю структуру, так и отдельное поле. Возвращать структуру целиком можно как ретурном, так и указателем (в этом случае вместо имени структуры в функцию передается указатель на нее). Однако второе предпочтительнее (по версии Козина), т.к. при возвращении через ретурн память под структуру выделяется в трех местах (в main, в функции и отдельно создается временная переменная для возвращения), а структуры бывают о-о-очень большие.

Билет 56. Работа с внешними устройствами, общие сведения

Внешние устройства рассматриваются в С как файлы. Банальный пример: чтобы прочитать строку с помощью fgets из файла, надо передать третьим параметром указатель на файл, а чтобы прочесть с клавиатуры, надо передать stdin (стандартный поток ввода), что является своеобразным указателем на «файл» буфера клавиатуры.

*прочие функции ввода/вывода описаны в билете 48.

Билет 57. Ввод/вывод

Работа функций ввода/вывода описана в билете №48.

В этом билете упомянем только о форматах вывода и о паре фишек.

Форматы:

%d – целочисленные, соответствует типу int, unsigned int

%f – вещественные, соответствует float (4 байта)

%lf – вещественные с двойной точностью, соответствует double (8 байт)

%g – вещественные, автоматически определяет, сколько ставить знаков после запятой, соответствует float и double

%с – символ, соответствует char (1 байт)

%s – вывод строки(т.е. массива символов)

При написании формата также используется следующее:

printf(“%-d”,i); - обычно выравнивание делается по правому краю, минус устанавливает выравнивание по левому

printf(“%5.2f”,k); - цифры до точки указывают на количество выводимых символов, после точки – на количество знаков после запятой. Если у формата нет дробной части, то ставится только целое число

printf(“%*d”,m,k); - выводит число k, а m подставляется вместо звездочки

scanf(“%*c”); - читает символ из буфера клавиатуры «в никуда», используется чтобы убирать из буфера символы конца строки (при чтении из файла можно так прочитать ненужную строку)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]