void *voidp_is = &is;
Здесь &is
имеет тип struct istruct *
и не имеет квалификатора const
, только член i
равен const
. Обратите внимание, что запись в const
член структуры (например, ((struct istruct *) voidp_is)->i=0;
) приведет к неопределенному поведению, так как вы изменяете const int
. (C2011, 6.7.3 / 6)
void *voidp_i = &i;
В этом примере &i
имеет тип int const *
, а квалификатор const
сбрасывается при инициализации.