So I have a struct
:
typedef struct myStruct
{
const int *const array_ptr;
} myStruct_s;
I have a const
array of int
:
const int constArray[SIZE1] =
{
[0] = 0,
[1] = 1,
[2] = 2,
//...
};
Now I have a const
array of myStruct_s
initialized with designated intializers:
const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = &constArray
},
//...
}
I get the warning:
a value of type "const int (*)[SIZE1]" cannot be used to initialize an entity of type "const int *const"
How can I properly initialize this pointer?
I'd like to avoid:
const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = (const int *const) &constArray
},
//...
}
If possible, since I feel like I tell the compiler "I don't know what I am doing, just don't check the type please"...
Thanks for your help :).
constArray
is already (decays into) a pointer, you want
.array_ptr = constArray
or
.array_ptr = &constArray[0] /* pointer to the first element */
instead of
.array_ptr = &constArray /* you don't want the address of */
Consider
int a[] = {1,2};
int *p = &a;
This is not correct because p
wants a pointer to an int
(&a[0]
or simply a
), not a pointer to an array of 2 int
(&a
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With