Так у меня есть struct
:Как правильно инициализировать переменную const int const *?
typedef struct myStruct
{
const int *const array_ptr;
} myStruct_s;
У меня есть const
массива int
:
const int constArray[SIZE1] =
{
[0] = 0,
[1] = 1,
[2] = 2,
//...
};
Теперь у меня есть const
массива myStruct_s
инициализирован с назначенными инициализаторами:
const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = &constArray
},
//...
}
Я получаю предупреждение:
значения типа «сопзИ Int (*) [size1]» не может быть использован для инициализации объекта типа «сопзИте Int * сопзИте»
Как правильно инициализировать этот указатель?
Я хотел бы избежать:
const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = (const int *const) &constArray
},
//...
}
Если это возможно, так как я чувствую, что я говорю компилятор «Я не знаю, что я делаю, просто не проверяют тип пожалуйста» ...
Спасибо за помощь :).
'array_ptr = & constArray [0];' – Nadir
Индексы массива начинаются с 0. Ваши назначения ('[1] = 1') начинаются с 1. Не связано с проблемой, но выглядит подозрительно. – davmac
@ davmac: Вы правы! На самом деле я использую 'enum' в качестве индексов для заполнения массивов. Я никогда не использую магические числа :). Я упростил свой код слишком быстро! – Plouff