La structure définie ci-dessous n'a pas de nom de structure. De plus, je suis incapable d'obtenir la partie de la matrice. Merci d'avance.
Que signifie les valeurs dans le tableau de structure? strong>
5 Réponses :
Vous pouvez avoir une structure sans nom, mais bien sûr, vous ne pouvez pas réutiliser son type. S est une gamme de structures, initialisées directement dans la déclaration. p>
Je doute que c'est la syntaxe correcte. P>
Non, c'est syntaxiquement bien; La seule chose que j'appellerais un bug réel i> dans ce code est le pointeur arithmétique
Je suppose que cela ne sera même pas compilé pour l'affectation du pointeur, mais s'il coule comme i = (int *) s; alors il va peut-être imprimer ... 15? : p merde
dans votre déclaration de struct
qui devrait lire p> grâce à vulkanino fort> pour pointer un petit blooper! p> < / p>
Les accolades internes ne sont pas nécessaires.
@Zack: Les accolades sont utilisées pour distinguer les structures en elles-mêmes dans l'initialisation ... Sauf si vous êtes correct?
Ne pense pas que c'est correct. Les structures sans nom sont belles. Votre code est faux, vous devriez déclarer mystructag mystructlist [] = ...
@ Tommieb75: Oui, c'est ce que font les accessoires internes, et c'est un bon style de les mettre là-bas, mais vous pouvez les laisser sortir si vous le souhaitez. Le code de l'OP compile bien (bien, avec des avertissements et une référence non définie à CLRSCR code>, mais ce n'est pas vraiment le point ici).
De plus, votre fragment de code déclare deux objets («muntructeur», ininitialisé et «mystructlist», initialisé), est-ce que c'est vraiment ce que vous vouliez dire? Et pourquoi l'espacement incompatible dans la liste d'initialistes?
@Zack: Bien sûr .... J'ai posté un commentaire ci-dessus dans la question de la pose d'un pointeur INT au tableau des structures ..... comme pour l'espacement incompatible qui ... peut être facilement réparé ... :)
Ce code ne compile même pas . Vous avez besoin struct mytructtag code> sur la dernière ligne, ceci est C, pas C ++. Et pourquoi déclarer un objet supplémentaire inutile ici ( muntruct code>)?
Chaque fois que vous avez besoin de référer en syntaxe C de la réalisation est p> struct code> pas plus d'une fois qu'il ait logé la création de la variable de celui-ci sans lui donner le nom. struct
{
int x,y;
}
Maintenant que nous avons une question qui peut être répondue: ceci déclare un tableau nommé Le code de votre manuel est négligé; Il ne s'agit pas de marquer des sous-structures dans la liste d'initialistes; Cela est autorisé, mais est considéré comme un style médiocre. Le compilateur l'interprète exactement la même chose que si le code avait été comme celui-ci: p> Chaque paire de numéros fermés d'attelée initialise un élément du tableau et ainsi de suite. P> p> s code>, de structures anonymes. Chaque structure comporte deux champs int code>. La taille de la matrice n'est pas spécifiée, ce sera donc aussi gros qu'il doit être de contenir la liste d'initialistes ("Liste d'initialistes" est le terme technique de la liste des nombres ci-jointe de la BRACE après le signe égal). P > S code>. Le premier numéro initialise x code> et le second y code>. Donc, tout cela est vrai: p>
Soyez prudent avec le terme struct anonyme i>: il semble que cela signifie quelque chose d'autre en C11, et le meilleur nom ici est SSPLUTE STRIT i>: Stackoverflow.com/a/14248127/895245
Ce n'est pas tout à fait clair ce que vous attendez de voir comme sortie du code que vous avez posté. Si vous vous attendez à voir «25», vous avez raison. Accéder aux membres de votre structure La façon dont vous essayez de faire, tandis que "valide" dans ce cas particulier, peut être très dangereux, sauf si vous savez exactement ce que vous faites. Considérez la modification mineure suivante à votre structure:
#include <stdio.h>
int main()
{
struct
{
int x, y;
} *ps, s[] = { {10, 20}, {5, 25}, {8, 75}, {6, 2} };
ps = s;
printf( "%d\n", *(ps + 3) );
printf( "%d\n", s[3].x );
printf( "%d\n", (ps + 3)->x );
return 0;
}
par "Obtenir la partie de tableau" Vous voulez dire "pour comprendre la partie de la matrice"?
Rien dans ce code n'a l'air incorrect; C'est déroutant et inutilement donc, à cela - qu'essayez-vous de faire?
C'est parfaitement bien pour une structure pour avoir aucun nom. Quelle est ta question?
Pourquoi utilisez-vous un pointeur sur INT et l'attribuez-le au tableau des structures ...? puis la désespecrée pour imprimer un entier - qui devrait avoir un nom de membre là-bas ....
C'est mes devoirs qui ont des questions à ce sujet comme ce qui veut * (x + 1) pointera et beaucoup d'entre eux. @Starkey: Je veux dire que ce que signifie les valeurs dans le tableau de structure?
Il y a au moins une forme de comportement non défini à cela. Si cela est vraiment des devoirs, une personne doit être tirée.
C'est d'un livre en fait! Laissez-nous c est le nom
@FAHAD - Vous pourriez vous faire une grande faveur en obtenant un livre décent.