web-dev-qa-db-fra.com

Comment créer une structure sur la pile en C?

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. 

49
stressed_geek

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
    .
    .
    .
}
49
harald

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;
}
24
JaredPar

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;
}
0
Danielle