How to create a struct on the stack in C?
The same way you declare any variable on the stack:
struct my_struct {...};int main(int argc, char **argv){ struct my_struct my_variable; // Declare struct on stack . . .}
To declare a struct on the stack simply declare it as a normal / non-pointer value
typedef struct { int field1; int field2;} C;void foo() { C local; local.field1 = 42;}
an answer to 17.4 Extra Credit (in Zed's book "Learn C the Hard Way") using functions
#include <stdio.h>struct Person { char *name; int age; int height; int weight;};struct Person Person_create(char *name, int age, int height, int weight){ struct Person who; who.name = name; who.age = age; who.height = height; who.weight = weight; return who;}void Person_print(struct Person who){ printf("Name: %s\n", who.name); printf("\tAge: %d\n", who.age); printf("\tHeight: %d\n", who.height); printf("\tWeight: %d\n", who.weight);}int main(int argc, char *argv[]){ // make two people structures struct Person joe = Person_create("Joe Alex", 32, 64, 140); struct Person frank = Person_create("Frank Blank", 20, 72, 180); //print them out and where they are in memory printf("Joe is at memory location %p:\n", &joe); Person_print(joe); printf("Frank is at memory location %p:\n", &frank); Person_print(frank); // make everyone age 20 and print them again joe.age += 20; joe.height -= 2; joe.weight += 40; Person_print(joe); frank.age += 20; frank.weight += 20; Person_print(frank); return 0;}