Google News
logo
Pointer to a structure In C Language
It is also possible to create structure pointers. We can also create a pointer, pointing to structure elements.  
For this we require “->” operator.

The arrow operator (->) introduced in second version of C language, it is a shortcut operator to access members of a structure through pointer.
If user-defined type is “struct student”, then its pointer type is “struct student*”

For example:
 struct student *p; // p is a pointer variable to structure
P=&s1; //making pointer ‘p’ to s1
Structures

Now the expression “*p” accesses the total memory of “s1”
The expression “(*p).id” accesses the “id” in s1.
The expression “(*p).id” is equal to “p -> id”
The expression “(*p).name” accesses the “name” in s1.
                  “(*p).name” is equal to “p -> name”

Program : The following program is an example of pointer to a structure.
#include <stdio.h>
#include <string.h>
 struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
void printBook( struct Books *book );
int main( )
{
   struct Books Book1;        //Declare Book1 of type Book 
   struct Books Book2;        // Declare Book2 of type Book 
 
   strcpy( Book1.title, "C Programming");
   strcpy( Book1.author, "vinay"); 
   strcpy( Book1.subject, "C Programming Tutorial");
   Book1.book_id = 6495407;

   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "naveen");
   strcpy( Book2.subject, "Telecom Billing Tutorial");
   Book2.book_id = 6495700;
 
   printBook( &Book1 );
   printBook( &Book2 );
 return 0;
}

void printBook( struct Books *book )
{
   printf( "Book title : %s\n", book->title);
   printf( "Book author : %s\n", book->author);
   printf( "Book subject : %s\n", book->subject);
   printf( "Book book_id : %d\n", book->book_id);
}
Output :

Book title: C Programming
Book author: vinay
Book subject: C Programming Tutorial
Book book_id: 6495407
Book title: Telecom Billing
Book author: naveen
Book subject: Telecom Billing Tutorial
Book book_id: 6495700