- •Группа операторов с ошибкой:
- •Указать ошибку:
- •Указать ошибку: ???
- •Указать и объяснить ошибку:
- •Истинные высказывания:
- •Правильные определения указателей:
- •Правильная инициализация указателей:
- •Правильная инициализация указателей:
- •Операторы с ошибкой:
- •Присваивание указателей выполняется с ошибкой в операторах:
- •Присваивание указателей выполняется с ошибкой в операторах:
- •Инициализация указателя выполняется правильно в операторах:
- •Истинные высказывания:
- •Определить результат:
- •Определить результат:
- •Определить результат:
- •Результат сложения/вычитания указателя type * ptr с константой n определяют выражения:
- •Интерпретировать выражение:
- •Интерпретировать выражение:
- •??? Интерпретировать выражение:
- •??? Интерпретировать выражение:
- •??? Интерпретировать выражение:
- •НазвАть тип
- •Назвать тип
- •Назвать тип
- •Результат работы программы:
- •Результат работы операторов //6, //7 и //8 программы:
- •Указать операторы с ошибкой
- •Истинные высказывания:
- •Неявное (по умолчанию) приведение типа выполняется с ошибкой в операторах:
- •Указать ошибку и объяснить ее причины:
- •Указать ошибку и объяснить ее причины:
- •Указать ошибку и объяснить ее причины:
- •Указать ошибку и объяснить ее причины:
- •Верное использование указателя на константу
- •Неверное использование указателя-константы
- •Неверное использование указателя-константы на константу
- •Истинные высказывания:
- •Верные операторы:
- •Последовательность выполнения операторов
Указать операторы с ошибкой
(номера операторов вводить по возрастанию, без пробелов, разделяя запятой):
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. ключевое слово void говорит об отсутствии данных о размере объекта в памяти
2. указателю на void нельзя присвоить значение указателя любого типа
3. указатель на void нельзя сравнивать с любыми указателями
4. при использовании указателя, описанного как void*, необходимо выполнить операцию явного приведения типа указателя, т.к. компилятору для корректной интерпретации ссылки на память через указатель нужна информация о числе байтов, участвующих в операции
5. при использовании указателя, описанного как void*, необходимо явным образом преобразовать указатель к конкретному типу
определить результат:
unsigned long block = 0xffeeddccL; void *ptr = █ unsigned char ch; ch = *( reinterpret_cast <unsigned char*>(ptr)); printf (”%x”, ch); // cc
определить результат:
unsigned long block = 0xffeeddccL; void *ptr = █ unsigned short bytes; bytes = *( reinterpret_cast <unsigned short *>(ptr)); printf (”%x”, bytes);
// ddcc
определить результат:
unsigned long block = 0xffeeddccL; void *ptr = █ unsigned long bytes;
bytes = *( reinterpret_cast <unsigned long *>(ptr)); printf (”%x”, bytes1);
// ffeeddcc
Гр.6________________________________________________________________________________________________________________________
Для указателей-переменных разрешены операции:
1. присваивания,
2. доступа по указателю
3. инкремента или декремента,
4. сложение с константой,
5. вычитание двух указателей,
6. сравнение указателей (одного типа),
7. приведение типов,
8. получения адреса (&),
9. умножения
10. сложения
неявное (по умолчанию) приведение типа выполняется правильно в операторах:
(номера операторов вводить по возрастанию, без пробелов, разделяя запятой):
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;
}