Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тест_9_л_8.doc
Скачиваний:
5
Добавлен:
24.08.2019
Размер:
206.34 Кб
Скачать
  1. Указать операторы с ошибкой

(номера операторов вводить по возрастанию, без пробелов, разделяя запятой):

int main()

{

int intvar;

float flovar;

int* ptrint; //1

float* ptrflo; // 2

void* ptrvoid; // 3

ptrint = &intvar; //4

ptrint = &flovar; //5

ptrflo = &intvar; //6

ptrflo = &flovar; //7

ptrvoid = &intvar; //8

ptrvoid = &flovar; //9

_getch();

return 0;

}

  1. Истинные высказывания:

1. ключевое слово void говорит об отсутствии данных о размере объекта в памяти

2. указателю на void нельзя присвоить значение указателя любого типа

3. указатель на void нельзя сравнивать с любыми указателями

4. при использовании указателя, описанного как void*, необходимо выполнить операцию явного приведения типа указателя, т.к. компилятору для корректной интерпретации ссылки на память через указатель нужна информация о числе байтов, участвующих в операции

5. при использовании указателя, описанного как void*, необходимо явным образом преобразовать указатель к конкретному типу

  1. определить результат:

unsigned long block = 0xffeeddccL; void *ptr = &block; unsigned char ch; ch = *( reinterpret_cast <unsigned char*>(ptr)); printf (”%x”, ch); // cc

  1. определить результат:

unsigned long block = 0xffeeddccL; void *ptr = &block; unsigned short bytes; bytes = *( reinterpret_cast <unsigned short *>(ptr)); printf (”%x”, bytes);

// ddcc

  1. определить результат:

unsigned long block = 0xffeeddccL; void *ptr = &block; unsigned long bytes;

bytes = *( reinterpret_cast <unsigned long *>(ptr)); printf (”%x”, bytes1);

// ffeeddcc

Гр.6________________________________________________________________________________________________________________________

  1. Для указателей-переменных разрешены операции:

1. присваивания,

2. доступа по указателю

3. инкремента или декремента,

4. сложение с константой,

5. вычитание двух указателей,

6. сравнение указателей (одного типа),

7. приведение типов,

8. получения адреса (&),

9. умножения

10. сложения

  1. неявное (по умолчанию) приведение типа выполняется правильно в операторах:

(номера операторов вводить по возрастанию, без пробелов, разделяя запятой):

int main()

{ int intvar=5; float flovar=5.0f; double dvar=5.0;

int* ptrint =&intvar; float* ptrflo =&flovar;

double* ptrd =&dvar; void* ptrvoid =&intvar;

ptrvoid = ptrint; //1

ptrvoid = ptrflo; //2

ptrvoid = ptrd; //3

ptrflo = &intvar; //4 ptrflo = ptrint; //5

ptrd = ptrflo ; //6

ptrint = ptrvoid; //7

_getch();

return 0;

}