c pointeur vers un tableau de structures
Je sais que cette question a été posée à beaucoup de choses, mais je suis encore difficile de savoir comment accéder à leurs structures.
Je veux faire mondial pointeur vers un tableau de structures:
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;
}
Mais il me donne des avertissements. Comment dois-je accès aux structures avec []
?
De même, comment dois-je créer un tableau de pointeurs de type struct? test_t *_array_ptr[2];
?
source d'informationauteur user1539348
Vous devez vous connecter pour publier un commentaire.
La syntaxe que vous cherchez est un peu lourd, mais il ressemble à ceci:
Vous pouvez alors l'utiliser comme ceci:
À rendre la syntaxe plus facile à comprendre, vous pouvez utiliser un
typedef
:La cdecl utilitaire est utile pour déchiffrer complexe déclarations en C, en particulier lorsque les tableaux et les pointeurs de fonction s'impliquer.
test_t * test_array_ptr
est un pointeur verstest_t
. Il pourrait être un pointeur vers l'instance unique detest_t
mais il pourrait être un pointeur vers le premier élément d'un tableau d'instances detest_t
:ce fait
myArray
point pour le premier élément dearray1
et l'arithmétique des pointeurs permet de traiter ce pointeur comme un tableau. Maintenant, vous pouvez accéder à la 2e élément dearray1
comme ceci:myArray[1]
qui est égale à*(myArray + 1)
.Mais ce que je comprends, ce que vous voulez vraiment faire, c'est de déclarer un pointeur de pointeur de
test_t
qui va représenter un tableau de pointeurs vers des tableaux:Le problème que vous avez est que vous prenez
(*test_array_pointer)
qui est le premier élément du tableau. Si vous souhaitez attribuer à un élément du tableau, vous devez faire ce qui suit...si vous voulez toujours attribuer au premier élément du tableau, vous pourriez faire ceci...
et cela a été souligné à moi par les autres, et quelque chose honnêtement, j'avais complètement oublié pour ne pas l'avoir utilisé dans la meilleure partie de forever, vous pouvez faire l'affectation directe de structures simples dans C...
Je voudrais utiliser un pointeur vers un pointeur comme: