Что значит звёздочка после типа указателя?
что значить Звёздочка после типа?
https://en.cppreference.com/w/c/language/pointerДля чего после double стоит *, ведь это символ разыменования, а что мы разыменуем?
В данном случае звездочка не является оператором а относится к типу.Зачем перед malloc стоит (double*)
https://en.cppreference.com/w/c/memory/malloc
Выделяет память в байтах (возвращает указатель на void), и ничего не знает о том как вы ими будете распоряжаться.N.B. В современном Си такой необходимости нет.c-faq.com/malloc/cast.html
c-faq.com/malloc/mallocnocast.htmlприведение к типу (double*) сообщает компилятору, что вы хотите.
Первая запись обьявляет переменную ptd указателем на double. Компилятор ожидает, что в данной переменной хранится адрес памяти ячейки, который указывает на переменную типа double, хотя сразу после обьявления в ней находится мусор - неопределенное значение.
Вторая запись выделяет память под хранение переменных.
sizeof(double) - получить размер переменной double для текущей платформы
malloc - выделить память под десять переменных размером в double - обычная вещь для массива например.
(double *) - привести тип возвращаемого значения (malloc всегда возвращает void) к типу "указатель на double"
Надо сказать, что данный код можно использовать только в том случае, если сразу за malloc() идет чтение или инициализация массива. Потому что malloc() вернул область памяти, заполненную случайными данными. Для гарантии, что там не будет мусора лучше использовать calloc:ptd = (double *) calloc(sizeof(double), 10);