Правда, я забыл, что он спрашивал конкретно об указателях.

овичок в C, я запутался, когда приведение указателя в порядке.

Как я понимаю, вы можете в значительной степени привести любой тип указателя к любому другому типу, и компилятор позволит вам это сделать. Например:

int a = 5;
int* intPtr = &a;
char* charPtr = (char*) intPtr; 

Тем не менее, в общем случае это вызывает неопределенное поведение (хотя это работает на многих платформах). При этом, похоже, есть некоторые исключения:

вы можете бросить в и изvoid* свободно (?)вы можете бросить в и изchar* свободно (?)

(по крайней мере, я видел это в коде ...).

Так что бросает между указателями типовне неопределенное поведение в C?

Редактировать:

Я пытался заглянуть в стандарт C (раздел "6.3.2.3 Указатели", вhttp://c0x.coding-guidelines.com/6.3.2.3.html ), но не совсем поняла, кромеvoid*.

Edit2:

Просто для пояснения: я явно спрашиваю только о «нормальных» указателях, т.е.не о функциональных указателях. Я понимаю, что правила для наведения указателей на функции очень ограничительны. На самом деле, я уже спрашивал об этом :-):Что произойдет, если я приведу указатель на функцию, изменив количество параметров

Ответы на вопрос(5)

Ваш ответ на вопрос