Я знаю, что этот вопрос задан очень часто, но я до сих пор неясно, как получить доступ к структурам.c указатель на массив структур
Я хочу, чтобы глобальный указатель на массив структур:
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;
}
Но это дает мне предупреждения. Как мне получить доступ к конкретным структурам с помощью []
?
Как я могу создать массив указателей типа struct? test_t *_array_ptr[2];
?
не должен дать вам предупреждение, должен дать ошибку. '(* test_array_ptr) [0]' разыгрывает дважды, но есть только один уровень звезд. –
@ DanielFischer: gcc, например, часто печатает предупреждения для конструкций, которые являются «нарушениями ограничений» (примерно так же, как C приходит к утверждению, что что-то незаконно *). Опция '-pedantic-errors' позволяет вести себя более строго. –
@KeithThompson Да, но для этой конкретной проблемы gcc говорит 'deref.c: 18: 18: error: индексированное значение не является ни массивом, ни указателем, ни вектором' без каких-либо флагов. (Хм, что такое 'vector', это C?) Для таких вещей, как разыменование структуры или доступ к члену' int', где компилятор просто не знает, как это сделать, он отказывается и бросает ошибка. –