Сегодня я достиг страницы 167 языка программирования Си (второе издание Брайан В. Керниган и Деннис М. Ричи) и обнаружил, что автор говорит, что я должен сыграть malloc
. Вот часть из книги:
7.8.5 Управление хранением
Функции malloc и calloc динамически получают блоки памяти.
void *malloc(size_t n)
возвращает указатель на n байтов неинициализированного хранилища или NULL, если запрос не может быть выполнен.
void *calloc(size_t n, size_t size)
возвращает указатель на достаточно свободного места для массива из n объектов указанного размера или NULL, если запрос не может быть выполнен. Хранилище инициализируется до нуля. Указатель, возвращаемый malloc или calloc, имеет правильное выравнивание для рассматриваемого объекта, но он должен быть приведен к соответствующему типу, как в
int *ip; ip = (int *) calloc(n, sizeof(int));
Я уже знаю, что malloc
(и его семейство) возвращает тип void * , и есть хорошие объяснения, почему бы не броситьmalloc
.
Но мой вопрос: почему в книге сказано, что я должен ее сыграть?
void *
и не был обновлен. Смотрите также этот ответ .malloc
потому что это НЕ C ++ - кроме случаев, когда вы должны - но вы не должны - кроме ... AGGGHHHHHH !!!!! :-)Ответы:
С http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :
источник
char*
, нетchar
. Два совершенно разные.