tableau de pointeurs vers des structures
J'essaie de comprendre si mon code est correct. J'ai besoin de déclarer un tableau de pointeurs vers des structures, de créer une nouvelle structure et assigner les valeurs et les imprimer. Il me semble que je ne suis pas déclarer tableau de pointeurs correctement. J'ai besoin de savoir ce que je fais mal. Merci
J'obtiens cette erreur de compilation: erreur: "personnes" non déclaré (première utilisation dans cette fonction)
Et j'ai essayé d'insérer structure de données *liste; dans le main, mais il ne serait pas travailler
char *book[] = { "x", "y", "z",};
int number[] = { 1, 2, 3};
struct data = { char *bookname; int booknumber;};
function(char *x, int y)
{
static int count;
struct data *list[3];
//creating a new struct
list[count] = (struct data*) malloc( sizeof(struct data) );
//assigning arguments
list->bookname = x;
list->booknumber = y;
count++;
}
int main()
{
struct data *list[3];
int i;
for(i = 0; i < 3; i++)
{
function(book[i], number[i]);
printf("name: %c number: %d", list[i]->bookname, list[i]->booknumber);
}
list
ne doit pas être visible dans main()
droit,
function
doit être fait pour retourner un pointeur vers un struct data
, qui peut ensuite être imprimé (et, surtout, free()
ed!) dans la principale.OriginalL'auteur Jack Morton | 2012-07-19
Vous devez vous connecter pour publier un commentaire.
S'il vous plaît changer le morceau de code suivant
à
[100]
limite est une régression. Cela devrait également être alloué dynamiquement, ou manipulés par l'appelant.La réponse est juste un exemple. Donc, j'ai utilisé 100. J'ai juste donné un pointeur à ce que lui causait le soi-disant erreur de compilation. Espérons que cela purifie l'air.
OriginalL'auteur Jay
Puisque vous voulez des tableaux, vous devez déclarer tableaux:
Un autre problème est
Ici,
list
va toujours y avoir qu'un seul élément. Donc, sicount
est rien d'autre que0
, vous aurez accès à un tableau de limites!eh bien, j'ai essayé de faire struct données *liste[3]; mais il ne serait pas compiler
Faire un tableau dynamique:
malloc( sizeof(struct data) * 3 )
OriginalL'auteur chrisaycock
Je pense que vous devriez écrire:
Parce que, dans votre cas, vous avez été le fait de déclarer un tableau de caractères et de le remplir avec des pointeurs, qui en réalité n'a pas de sens.
Dans la ligne de code ci-dessus, il signifie simplement "déclarer un tableau de pointeurs".
Espère que ça a aidé...
OriginalL'auteur Geoffrey R.
Ce sont des choses qui sont mal dans votre programme
"=" ne devrait pas être là
Ici, vous créez de l'espace pour une seule liste, de sorte que vous ne pouvez pas faire la liste[nombre]-> bookname, il convient de liste->bookname. Même avec booknumber
Et la liste est locale à la fonction, tu ne peux pas y accéder en main.
OriginalL'auteur neel