// 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("
the cessna has %d liters of fuel", Hummingbird->fuel);
// set the value by pointer
Hummingbird->fuel = 15;
printf("
the 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("
landing gear is up");
}
else
{
printf("
landing gear is down");
}
};
//structs pointing to functions
#include <stdio.h>
// struct
typedef struct audio
{
// All of these are asignable pointers to functions
void (*play_ptr)();
void (*stop_ptr)();
void (*pause_ptr)();
void (*forward_ptr)();
void (*back_ptr)();
} audio;
// This function starts a new line in the console out put;
void space()
{
printf("
");
}
// five different funtions for the pointers in the struct to be pointed at.
void play_function()
{
printf("Play >");
space();
}
void stop_function()
{
printf("Stop []");
space();
}
void pause_function()
{
printf("Pause ||");
space();
}
void forward_function()
{
printf("Forward -->");
space();
}
void back_function()
{
printf("Back <--");
space();
}
int main()
{
space();
// Make a new Audio struct named Player and pass in the function names to asign them to the struct pointers
audio Player = {play_function, stop_function, pause_function, forward_function, back_function};
Player.play_ptr(); // This calls the play function from the audio struct Player
Player.forward_ptr(); // This calls the forward function from the audio struct Player
Player.pause_ptr(); // This calls the pause function from the audio struct Player
Player.play_ptr(); // This calls the play function from the audio struct Player
Player.back_ptr(); // This calls the back function from the audio struct Player
Player.stop_ptr(); // This calls the stop function from the audio struct Player
}
#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:
");
for(i = 0; i < n; ++i)
printf("Name: %s Age: %d
", (ptr+i)->name, (ptr+i)->age);
return 0;
}
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;
}
struct name {
member1;
member2;
.
.
};
int main()
{
struct name *ptr, Harry;
}