Do the lcthw ex16 extra credit with stack structs
This commit is contained in:
parent
4c2c6ef429
commit
869f273723
57
lcthw/ex16ec.c
Normal file
57
lcthw/ex16ec.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.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 = strdup(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, 100);
|
||||||
|
|
||||||
|
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 years 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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user