Главная страница
Навигация по странице:

  • define

  • Лекции. Основные понятия и определения


    Скачать 1.94 Mb.
    НазваниеОсновные понятия и определения
    Дата27.03.2018
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файлаЛекции.docx
    ТипКонтрольные вопросы
    #39570
    страница31 из 58
    1   ...   27   28   29   30   31   32   33   34   ...   58

    Вопросы для самопроверки и контроля

    Вопросы для самопроверки

    1. Что произойдет при присваивании переменной типа enum значения не из списка допустимых значений в программе на языке C? А в языке Basic?

    2. Есть ли предопределенный тип для дат/времени в языке C?

    3. Какое средство языка C напоминает тип Object языка Basic?

    4. Для чего нужен тип void?

    5. Какой язык позволяет менять размеры массивов во время выполнения программы?

    6. Может ли структура быть элементом другой структуры?

    7. Может ли 1 переменная типа Delegate использоваться для представления процедур с различным списком параметров?

    8. Каков основной принцип автоматических преобразований числовых типов данных?
    Контрольные вопросы

    1. Есть ли средства для манипулирования частями массивов, например, строкой или столбцом матрицы? Если есть, то в каком языке и какие?

    2. Есть ли средства для работы с битами? Назовите, если они есть.

    3. Что называют рекурсивной структурой?

    4. Что является признаком переменной структуры?

    5. Что такое объединение?

    6. Отличаются ли правила обращения к элементу структуры в языках C и Basic?

    7. Каковы недостатки использования типа данных Object?

    8. Напишите инструкцию явного преобразования типа языка C.


    11. ОПЕРАТОРЫ. ДОПОЛНЕНИЕ


    В этом разделе рассматривается полный перечень операторов языка C, указывается приоритет и порядок выполнения каждого из них. Это связано с тем, что в разделе 4 были приведены не все операторы языка. Операторы языка Basic ранее были рассмотрены практически полностью. Некоторые опущенные будут добавлены по ходу изложения.

    Каждый оператор характеризуется: числом операндов, уровнем (приоритетом) и порядком выполнения. По числу операндов операторы делятся на одноместные (унарные), двуместные (бинарные) и трехместные (тернарные). Уровень 1 означает наибольший приоритет. Порядок выполнения операторов одного уровня может быть слева направо (→) и справа налево (←).

    11.1. Уровень 1


    Порядок выполнения: →

    Операторы: ( ) [ ] . ->

    Первые два оператора означают: (...) – список аргументов процедуры, [...] – индексирование (вычисление индексного выражения).

    Пример.

    int *(*(*x)[6])(); // Указатель на массив из 6 указателей на функцию, возвращающей указатель на int.

    Два последних оператора реализуют обращение к элементу структуры, причем оператор -> использует указатель на структуру.

    Первый вариант обращения имеет вид:

    <имя структуры> . <имя элемента или подструктуры> [. <имя элемента или подструктуры>]...

    Пример. Структура, описывающая произвольную дату.

    struct date{

    short day; // День месяца

    short month; // № месяца

    short year; // Год

    short year_day; // № дня в году

    unsigned char mon_name[3];// Краткое название месяца

    }data;

    ..............................................

    data.year // Извлекается значение года

    data.mon_name[2] // 3-я буква названия месяца

    Пример. Объявление типа структуры (память не выделяется).

    #define NameSize 25

    #define AddrSize 40

    …………………………………..

    struct person{

    char name[NameSize]; // Фамилия И.О. студента

    char adres[AddrSize]; // Адрес

    date birthdate; // Дата рождения

    date insdate; // Дата поступления в институт

    };

    Размеры символьных массивов задаются с помощью символических констант. В качестве элементов структуры person используется ранее объявленный тип структуры date.

    Определение переменной типа person:

    person student;

    Обращение к элементу структуры может иметь вид:

    student.birthdate.month // Месяц рождения студента

    Для того, чтобы при обращении к элементу структуры использовать указатель и оператор ->, необходимо задать ему значение. Это можно сделать, например, так:

    pd=&student.birthdate;

    Тогда допустимо обращение вида:

    (*pd).year

    или

    pd->year
    1   ...   27   28   29   30   31   32   33   34   ...   58


    написать администратору сайта