Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Неправда. Явное приведение типов указателей разрешено... 31.01.05 11:44 Число просмотров: 3285
Автор: amirul <Serge> Статус: The Elderman
|
> Это указатель на тип void. Вернее было бы сказать, что это > указатель неопределённого типа. > > Вообще указатель одного типа привести к указателю другого > типа нельзя. То есть на такую строчку: > > int *s=SOMETHING; > char *p; > p=(char *)(s);
> Компилятор будет материться. (С++ может и не будет, я с ним > не знаком, но вот Сишный будет)
Неправда. Явное приведение типов указателей разрешено всегда. Как в C так и C++.
Отличие только с неявным приведением типов. Вот тут есть отличие между C и C++ и как раз в плане указателей на void.
В частности переменная с типом (void *) в C может быть НЕЯВНО присвоена указателю на любой другой тип (но не наоборот), в C++ такой финт ушами невозможен (в C++ вообще более жесткий контроль типов)
> int *x; > x=(int *)(malloc(sizeof(int)))
Если учесть, что malloc описан как
void *malloc(size_t);
То в случае C явное преобразование типов - не нужно:
int *x = malloc(sizeof(int[10]));
В C++, опять таки, такой финт не пройдет
|
|
|