xxxxxxxxxx
struct name {
member1;
member2;
.
.
};
int main()
{
struct name *ptr, Harry;
}
xxxxxxxxxx
// setting a pointer to a struct in C
// and set value by pointer
#include <stdio.h>
#include <stdbool.h>
// a struct called airplane
typedef struct
{
int fuel;
double speed;
bool landing_gear_down;
} airplane;
int main()
{
// make a pointer
airplane *Hummingbird; // *Hummingbird is now a pointer and it can be assigned to point at a struct of type airplane.
// this creates a struct of type airplane and assigns it a name of cessna and initializes it
airplane cessna = {50, 155, true};
Hummingbird = &cessna; // now assign the pointer to the struct address
// you can now call data types / variables via the pointer
(*Hummingbird).fuel; // this is a little messy
Hummingbird->speed; // this is clean and understandable
printf("\nthe cessna has %d liters of fuel", Hummingbird->fuel);
// set the value by pointer
Hummingbird->fuel = 15;
printf("\nthe cessna has %d liters of fuel", Hummingbird->fuel);
(*Hummingbird).landing_gear_down = false;
// or
Hummingbird->landing_gear_down = false;
if (Hummingbird->landing_gear_down == false)
{
printf("\nlanding gear is up");
}
else
{
printf("\nlanding gear is down");
}
};
xxxxxxxxxx
#include <stdio.h>
#include <stdlib.h>
struct person {
int age;
float weight;
char name[30];
};
int main()
{
struct person *ptr;
int i, n;
printf("Enter the number of persons: ");
scanf("%d", &n);
// allocating memory for n numbers of struct person
ptr = (struct person*) malloc(n * sizeof(struct person));
for(i = 0; i < n; ++i)
{
printf("Enter first name and age respectively: ");
// To access members of 1st struct person,
// ptr->name and ptr->age is used
// To access members of 2nd struct person,
// (ptr+1)->name and (ptr+1)->age is used
scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
}
printf("Displaying Information:\n");
for(i = 0; i < n; ++i)
printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);
return 0;
}
xxxxxxxxxx
typedef struct {
char name[20];
int age;
} Info;
Info* GetData() {
Info *info;
info = (Info *) malloc( sizeof(Info) );
scanf("%s", info.name);
scanf("%d", &info.age);
return info;
}