Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 6-10.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
312 Кб
Скачать
☆

Вопрос 1:Как работать со строками в языке c.Пример.

 Строка – это последовательность ASCII или UNICODE символов. Строки в си, как и в большинстве языков программирования высокого уровня рассматриваются как отдельный тип, входящий в систему базовых типов языка. Так как язык СИ по своему происхождению является языком системного программирования, то строковый тип данных в нем как таковой отсутствует, а в качестве строк в си используются обычные массивы символов.  Исторически сложилось два представления формата строк:   1. формат ANSI;   2. строки с завершающим нулем (используется в СИ).  Формат ANSI устанавливает, что значением первой позиции в строке является ее длина, а затем следуют сами символы строки. Например, представление строки "Моя строка!" будет следующим:   11 ‘М’ ‘о’ ‘я’ ‘ ’ ‘с’ ‘т’ ‘р’ ‘о’ ‘к’ ‘а’ ‘!’  В строках с завершающим нулем, значащие символы строки указываются с первой позиции, а признаком завершения строки является значение ноль. Представление рассмотренной ранее строки в этом формате имеет вид:   ‘М’ ‘о’ ‘я’ ‘ ’ ‘с’ ‘т’ ‘р’ ‘о’ ‘к’ ‘а’ ‘!’ 0 

Работа со строками в СИ:

 Так как строки на языке СИ являются массивами символов, то к любому символу строки можно обратиться по его индексу. Для этого используется синтаксис обращения к элементу массива, поэтому первый символ в строке имеет индекс ноль. Например, в следующем фрагменте программы в строке str осуществляется замена всех символов ‘a’ на символы ‘A’ и наоборот.   for(int i=0;str[i]!=0;i++)   {    if(str[i] == ‘a’) str[i] = ‘A’;     else if(str[i] == ‘A’) str[i] = ‘a’;   }

Функции для работы со строками в СИ

 Все библиотечные функции, предназначенные для работы со строками, можно разделить на три группы:   1. ввод и вывод строк;   2. преобразование строк;   3. обработка строк.

Вопрос 2:Связь между объединёнными и классами в C++.Ограничения

Точно так же, как структуры и классы связаны между собой, связаны и объединения и классы. Объединения представляют по существу структуру, в которой все элементы хранятся в одном и том же месте. Объединения могут содержать конструкторы и деструкторы, а также функции-члены и дружественные функции. Подобно структурам, члены объединения по умолчанию имеют в качестве спецификатора доступа public. Например, следующая программа использует объедине­ние для вывода символов, соответствующих старшему и младшему байтам короткого целого (име­ющего размер в два байта как для 16-битных, так и для 32-битных сред): #include <iostream.h> union u_type { u_type(short int a); // по умолчанию публичные void showchars (); short int i; char ch[2]; }; // конструктор u_type::u_type(short int a) { i = a; } // показ символов, которые содержит short int. void u_type::showchars() cout << ch [ 0 ] << " "; cout << ch [ 1 ] << "\n"; int main() u_type u(1000); u.showchars (); return 0; }

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

Имеется несколько ограничений, которые необходимо иметь в виду при использовании объе­динений в С++. Первое — объединение не может наследовать какие-либо другие классы. Далее объединение не может использоваться в качестве базового класса. Объединение не может иметь виртуальные функции-члены. Никакие статичес­кие переменные не могут быть членами объединения. Объединение не может иметь в качестве члена какой-либо объект, перегружающий оператор =. Наконец, никакой объект не может быть членом объединения, если этот объект имеет конструктор или деструктор.

Билет 10: