Попытка определить пользовательский тип я наткнулся на ошибку, я не совсем понимаю: следующий код работает отличноОпределяется тип не распознается инициализации указателя
const int a[5] = { 1, 2, 3, 4, 5 };
typedef const int costant;
costant b = 5;
costant *c = a;
void func(const int item)
{
printf("Item: %i\n", item);
}
int main(void)
{
func(a[0]);
func(b);
func(*c);
}
Nonethe меньше, инициализирует указатель
costant *c = a[0];
не указал, что Initializer element is not costant
. Пытаться получить доступ к адресу a[0]
, чтобы изменить его содержимое, с ошибкой assignment of read-only location
.
Почему считается адресом массива a
как const, но не его элементом a[0]
, даже если он «доступен только для чтения»?
Замена typedef
на #define costant const int
не изменяет поведение.
Линия typedef не компилируется. Пожалуйста, не сообщайте о несовместимом коде. –
'costant * c = &a[0];' будет работать (при условии фиксированного typedef) - потому что [0] является 'const int', а' c' является указателем на const int' –
Этот код ** не * * работа хорошо. – giusti