c pointer to array of structs
arrays, c, pointers, struct
Solution
The syntax you are looking for is somewhat cumbersome, but it looks like this:
// Declare test_array_ptr as pointer to array of test_t
test_t (*test_array_ptr)[];
You can then use it like so:
test_array_ptr = &array_t1;
(*test_array_ptr)[0] = new_struct;
To make the syntax easier to understand, you can use a `typedef`:
// Declare test_array as typedef of "array of test_t"
typedef test_t test_array[];
...
// Declare test_array_ptr as pointer to test_array
test_array *test_array_ptr = &array_t1;
(*test_array_ptr)[0] = new_struct;
The cdecl utility is useful for deciphering complex C declarations, especially when arrays and function pointers get involved.
Problem
I know this question has been asked a lot, but I'm still unclear how to access the structs. I want to make a global pointer to an array of structs: ``` typdef struct test { int obj1; int obj2; } test_t; extern test_t array_t1[1024]; extern test_t array_t2[1024]; extern test_t array_t3[1025]; extern test_t *test_array_ptr; int main(void) { test_array_ptr = array_t1; test_t new_struct = {0, 0}; (*test_array_ptr)[0] = new_struct; } ``` But it gives me warnings. How should I access the specific structs with `[]`? Similarly, how should I create an array of pointers of struct type? `test_t *_array_ptr[2];`?