LINUX.ORG.RU

работа с calloc в С/с++


0

0

#include <stdio.h>
#include <stdlib.h>


int main()
{
char *test;

test=calloc(1, sizeof(test));

}

Подскажите, почему этот код с точки зрения C-компилятора - рабочий,
в с точки зрения C++:
test.c: In function `int main()':
test.c:9: invalid conversion from `void*' to `char*'

Что за конверсия происходит? На C++ никогда не писал, но вот портировать один код хотелось бы.
anonymous

Посмотри на прототип calloc:

void *calloc(size_t nmemb, size_t size);

calloc возвращает void*, а ты его присваеваешь переменной типа (char*). Используй явное преобразование типов и все будет OK.

anonymous
()

А, разобрался. Криво маны прочел, спасибо за наводку.

anonymous
()

Хм, кстати а при компиляторе C - при присваивании работало все равно, причем правильно!

anonymous
()

оно везде правильно работать будет. Потому что указатель - это 4 байта, адрес области памяти. А то что в нему тип навертели - это от лукавого :)

SadStork
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.