So che questa domanda è stata posta molto, ma non sono ancora chiaro come accedere alle strutture.c puntatore a matrice di strutture
Voglio fare un puntatore globale a un array di struct:
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;
}
ma mi dà avvertimenti. Come devo accedere alle strutture specifiche con []
?
Analogamente, come dovrei creare un array di puntatori di tipo struct? test_t *_array_ptr[2];
?
non si dovrebbe dare avvertimenti, dovrebbe dare un errore. '(* test_array_ptr) [0]' dereferences due volte, ma c'è solo un livello di stelle. –
@DanielFischer: gcc, ad esempio, stampa frequentemente gli avvisi per i costrutti che sono "violazioni dei vincoli" (circa tanto quanto C viene a dire che qualcosa è * illegale *). L'opzione '-pedantic-errors' rende il comportamento più rigoroso. –
@KeithThompson Sì, ma per quel problema specifico, gcc dice 'deref.c: 18: 18: errore: il valore dell'iscrizione non è né array né pointer né vector' senza alcun flag. (Hmm, cos'è un 'vector', questo è C?) Per cose come il dereferenziamento di una struct, o l'accesso a un membro di un' int', dove il compilatore non ha idea di come dovrebbe farlo, si arrende e lancia un errore. –