Je comprends comment créer une struct
sur le tas en utilisant malloc
. Je cherchais de la documentation sur la création d'une struct
en C sur la pile, mais sur tous les documents. semblent parler de la création de struct sur le tas seulement.
De la même manière, vous déclarez n'importe quelle variable sur la pile:
struct my_struct {...};
int main(int argc, char **argv)
{
struct my_struct my_variable; // Declare struct on stack
.
.
.
}
Pour déclarer une structure sur la pile, déclarez-la simplement en tant que valeur normale/non-pointeur.
typedef struct {
int field1;
int field2;
} C;
void foo() {
C local;
local.field1 = 42;
}
Je l'ai obtenu pour fonctionner de cette façon:
#include <stdio.h>
struct Person {
char *name;
int age;
int height;
int weight;
};
int main(int argc, char **argv)
{
struct Person frank;
frank.name = "Frank";
frank.age = 41;
frank.height = 51;
frank.weight = 125;
printf("Hi my name is %s.\n", frank.name);
printf("I am %d yeads old.\n", frank.age);
printf("I am %d inches tall.\n", frank.height);
printf("And I weigh %d lbs.\n", frank.weight);
printf("\n-----\n");
struct Person joe;
joe.name = "Joe";
joe.age = 50;
joe.height = 93;
joe.weight = 200;
printf("Hi my name is %s.\n", joe.name);
printf("I am %d years old.\n", joe.age);
printf("I am %d inches tall.\n", joe.height);
printf("And I weigh %d lbs.\n", joe.weight);
return 0;
}