Пражнения на декларации, в т.ч. указателей, модификаторы типов и typedef
азовые типы данных и константы
1.Чим відрізняються y програмі наступні константи 'a' і “а”? Символьные константы – это символ в одиночных кавычках, например, ‘а’. “а”-массив символьных констант ‘а’ и ноль ('\Ø').
2.Які типи у Турбо-Сі-програмі пов'язуються з константами 2.77 і 2.77f? double - с плавающей точкой двойной точности. Float - плавающее, обычной точности.
3.Який тип даних можливо пов'язати з класом пам'яті register? Int, char
4.У чому різниця у деклараціях char * B=”Array of char” і char B[]=”Array of char”?Указатели и массивы
5.Наведіть приклад декларації змінної чи масиву, якій можна присвоїти результат обчислення виразу 'a'?char x=’a’
6.Чи можна у Турбо-Сі-програмі вказувати 2-х символьні константи? В дополнение к обычным определениям в Турбо Си можно определять 2-х символьные константы, например 'AB'.Такие константы размещаются в 2 смежных байтах: 1 символ в младшем байте , а 2-ой - в старшем.
Все символьные константы (в том числе и 2-х символьные) трактуются как тип int. Кроме того, можно задавать символьные константы при помощи 16-тиричных кодов: ‘xAB ’, ‘\xEF’.
7.Якого типу у Турбо-Сі-програмі константа 01101? 01101 - восьмеричное целое число
8.Якого типу у Турбо-Сі-програмі константа 0.1101? 0.1101 – float. С 0х в 16й системе счисления
9.Наведіть приклад декларації змінної Y, - цілої, без знаку, подвійної кількості розрядів. unsigned long
10.Наведіть приклад декларації змінної Х, - з плаваючою точкою, подвійної точності. double X
11.Скільки байт буде виділено під розміщення масиву A в результаті наступної декларації: Char 1 байт, …
12.Для чого використовується символьна константа ‘\0’ у масивах зі строками? ‘\0’ - ограничитель выводной строки символов,
13.Який керуючий зміст мають символьні константи ‘\t’ та ‘\n’? ‘\t’ - табуляция, ‘\n’ - переход на начало следующей строки,
перации, их приоритеты, вычисления с ними, преобразования типов
a) Дано наступний вираз X*Y<<1, де X має значення 3 та Y має значення 2. Чому дорівнює результат обчислення наведеного виразу? 12 (<< - сдвиг влево)
b) Дано наступний вираз X-Y-X++, де X має значення 2 та Y має значення 5. Чому дорівнюєрезультат обчислення наведеного виразу? -5
c) Чому дорівнює результат обчислення наступного виразу A+B*C>>F1 , якщо A=10, B=2, C=2 таF1=2? (>> - сдвиг вправо) 3
d) Дано наступні декларації – int A; char c; Яким буде тип наступного виразу 3.4+A*с ?Float
пражнения на декларации, в т.ч. указателей, модификаторы типов и typedef
a) Що означає модифікатор типу unsigned? unsigned добавляет еще 1 разряд вместо знакового для использования во внутреннем представлении значения переменной, т.е расширяет диапазон значений при тех же затратах основной памяти.
b) Навести декларацію масиву вказівників PP з 5 елементів, які можуть посилатись на функції зодним параметром типу double* і які повертають значення типу char. Char *PP[5](double* );
c) Навести декларацію вказівника PTR який може посилатись на масив з 5 елементів типу вказівникина тип char.char* PTR[5]
d) Навести оператор (typedef) за допомогою якого можна дати нове ім'я MY_T масиву вказівників з 10 елементів на тип char. Для упрощения описания структурных переменных можно использовать оператор Typedef- описание собственного типа
typedef char MAS*[10] MY_T;
e) Декларуйте в С-програмі масив вказівників з 5 елементів з ім'ям SF, елементи якого можутьпосилатись на функції, які повертають значення типу double, з першим параметром типу – вказівник на тип double та другим параметром – вказівником на вказівник типу double. double *SF[5](double* xxx, double** yyy)
f) Навести оператор за допомогою якого можна дати нове ім'я MY_T масиву вказівників з 10елементів на тип char.(застосовувати typedef) ( приклад рішення typedef char D*[10] MY_T; )
g) Навести оператор за допомогою якого можна дати нове ім'я MY_S масиву вказівників з 10елементів на тип struct DAT.( приклад рішення typedef struct DAT*[10] MY_S; )
h) Декларуйте в С-програмі вказівник SP на масив вказівників з 10 елементів типу вказівники наструктуру struct MY_S. struct MY_S *(*SP[10])
i) Декларуйте в С-програмі вказівник SF на функцію, яка повертає значення типу int, з однимпараметром типу – вказівник на тип char та другим параметром – вказівником на вказівник типу char. (приклад рішення int (* SF) (char * p, char **pp); )
j) Наведіть прототип функції FC, яка повертає значення типу double, має один обов'язковий параметртипу struct MY_S та необмежений список інших параметрів.
double FC(struck MY_S . . .)
k) Що означає наступна декларація: void * (* PP) (int X, long * Y); ?
Указатель на указатель на функцию ПП с 2мя параметрами, 1й – переменная типа инт, а 1я – указатель на У типа [lon])
l) Що виконує наступний оператор: typedef unsigned long * my_t;? он объявляет тип main, который является указателем на unsigned long
m) Наведіть імена молодших моделей пам'яті. TINY- Эта модель памяти используется в тех случаях, когда абсолютным критерием достоинства программы является размер ее загрузочного кода. Это минимальная из моделей памяти. Все четыре сегментных регистра (CS, DS, SS и ES) устанавливаются на один и тот же адрес, что дает общий размер кода, данных и стека, равный 64К. Используются исключительно ближние указатели. Программы со сверхмалой моделью памяти можно преобразовать к формату .COM (при компоновке с параметром /t), SМALL- Эта модель хорошо подходит для небольших прикладных программ. Сегменты кода и данных расположены отдельно друг от друга и не перекрываются, что позволяет иметь 64К кода программы и 64К данных и стека. Используются только указатели near. MEDIUM- Эта модель годится для больших программ, для которых не требуется держать в памяти большой объем данных. Для кода, но не для данных используются указатели far. В результате данные плюс стек ограничены размером 64К, а код может занимать до 1М.
n) Наведіть імена старших моделей пам'яті. СОМРАСТ- Лучше всего использовать эту модель в тех случаях, когда размер кода невелик, но требуется адресация большого объема данных. Указатели far используются для данных, но не для кода. Следовательно, код здесь ограничен 64К, а предельный размер данных - 1 Мб, LARGE- Модели large и huge применяются только в очень больших программах. Дальние указатели используются как для кода, так и для данных, что дает предельный размер 1 Мб для обоих. и HUGE- Дальние указатели используются как для кода, так и для данных. Borland C++ обычно ограничивает размер статических данных 64К; модель памяти huge отменяет это ограничение, позволяя статическим данным занимать более 64К.
o) Вкажіть імена всіх модифікаторів вказівників.(рішення near, far, huge, _cs, _ds, _еs, _ss)
p) Скільки байт займає в пам'яті комп'ютера вказівник типу near?(2)
q) Скільки байт займає в пам'яті комп'ютера вказівник типу far?(4)
r) Що означає наступна декларація float huge* ptr?
s) - Що означає наступна декларація char _es ** ptr?