2015-01-09 2 views
-2

у меня есть:Зачем устанавливать указатель void на адрес указателя int в c, и наоборот?

void *abc; 
int *abc2; 

int someInt = 5; 
int *intPtr = &someInt; 
abc = intPtr; // This line is ok without casting 
abc2 = abc;  // Here will be an error without casting 

Почему это?

+6

[Нет ошибки для меня] (http://ideone.com/gm9xYy), вы компилируете код как C++? Верьте или нет, C и C++ - это два разных языка. – Praetorian

+0

Можете ли вы также предоставить свой вывод компилятора (например: 'gcc myFile.c -Wall')? Это поможет. – DevNull

ответ

2

В языке C оба назначения (обе строки) отлично подходят без кастинга.

Вторая строка приведет к ошибке на C++, но ваш вопрос будет помечен C. Ваше утверждение об ошибке во второй строке ложно.