52 lines
No EOL
1.7 KiB
C++
52 lines
No EOL
1.7 KiB
C++
#include <iostream>
|
||
#include <cstdlib>
|
||
using std::cout, std::endl;
|
||
|
||
|
||
/*
|
||
В отличии от языка C, язык C++ не делает неявное преобразование типов указателей.
|
||
|
||
Рассмотрим, например, код:
|
||
|
||
int a = 10;
|
||
char* p = &a;
|
||
|
||
В языке C такой код сработает, несмотря на то, что в строке char* p = &a; слева стоит указатель типа char*
|
||
а справа объект типа int*. Будет произведено неявное преобразование типов указателей.
|
||
|
||
В языке C++ такой код приведёт к ошибке, так как C++ не преобразует указатели неявно.
|
||
|
||
|
||
|
||
Рассмотрим, например, код:
|
||
|
||
int* q = malloc(10 * sizeof(int));
|
||
|
||
В языке C такой код сработает, несмотря на то, что слева стоит указатель типа int*
|
||
а справа объект типа void* (malloc возвращает указатель типа void*).
|
||
Будет произведено неявное преобразование типов указателей.
|
||
|
||
В языке C++ такой код приведёт к ошибке, так как C++ не преобразует указатели неявно.
|
||
*/
|
||
|
||
|
||
|
||
int main()
|
||
{
|
||
int a = 10;
|
||
char* p = &a;
|
||
|
||
|
||
int* q = malloc(10 * sizeof(int));
|
||
}
|
||
|
||
|
||
|
||
|
||
/*
|
||
|
||
Задача:
|
||
|
||
Исправьте ошибки компиляции, явно приведя указатель к правильным типам.
|
||
|
||
*/ |