w3resource

C Exercises: Show a pointer to an array which contents are pointer to structure

C Pointer : Exercise-20 with Solution

Write a program in C to show a pointer to an array whose contents are pointers to structures.

Visual Presentation:

C Exercises: Pictorial: Show a pointer to an array which contents are pointer to structure.

Sample Solution:

C Code:

#include <stdio.h>

// Defining a structure for employee details
struct employee {
    char *empname;  // Employee name (string pointer)
    int empid;      // Employee ID (integer)
};

// Main function
int main() {
    // Displaying the purpose of the program
    printf("\n\n Pointer : Show a pointer to an array which contents are pointer to structure :\n");
    printf("-----------------------------------------------------------------------------------\n");

    // Initializing employee structures with values
    static struct employee emp1 = {"John", 1001}, emp2 = {"Alex", 1002}, emp3 = {"Taylor", 1003};

    // Creating an array of pointers to struct employee
    struct employee (*arr[]) = {&emp1, &emp2, &emp3};

    // Creating a pointer to an array of pointers to struct employee
    struct employee (*(*pt)[3]) = &arr; // pt stores the address of the array of pointers

    // Printing employee name using pointer to an array of pointers to structure
    printf(" Employee Name : %s \n", (**(*pt + 1)).empname);

    // Explanation for the printed employee name
    printf("---------------- Explanation --------------------\n");
    printf("(**(*pt+1)).empname\n");
    printf("= (**(*&arr+1)).empname   as pt=&arr\n");
    printf("= (**(arr+1)).empname     from rule *&pt = pt\n");
    printf("= (*arr[1]).empname       from rule *(pt+i) = pt[i]\n");
    printf("= (*&emp2).empname        as arr[1] = &emp2\n");
    printf("= emp2.empname = Alex       from rule *&pt = pt\n\n");

    // Printing employee ID using pointer to an array of pointers to structure
    printf(" Employee ID :  %d\n", (*(*pt + 1))->empid);

    // Explanation for the printed employee ID
    printf("---------------- Explanation --------------------\n");
    printf("(*(*pt+1))-> empid\n");
    printf("= (**(*pt+1)).empid     from rule -> = (*).\n");
    printf("= emp2.empid = 1002\n");
    printf("\n\n");

    return 0;
}

Sample Output:

 Pointer : Show a pointer to an array which contents are pointer to structure :                               
-----------------------------------------------------------------------------------                           
 Exmployee Name : Alex                                                                                        
---------------- Explanation --------------------                                                             
(**(*pt+1)).empname                                                                                           
= (**(*&arr+1)).empname   as pt=&arr                                                                          
= (**(arr+1)).empname     from rule *&pt = pt                                                                 
= (*arr[1]).empname       from rule *(pt+i) = pt[i]                                                           
= (*&emp2).empname        as arr[1] = &emp2                                                                   
= emp2.empname = Alex       from rule *&pt = pt                                                                 
                                                                                                              
 Employee ID :  1002                                                                                          
---------------- Explanation --------------------                                                             
(*(*pt+1))-> empid                                                                                            
= (**(*pt+1)).empid     from rule -> = (*).                                                                   
= emp2.empid = 1002 

Flowchart:

Flowchart: Show a pointer to an array which contents are pointer to structure

C Programming Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous:> Write a program in C to show a pointer to union.
Next: Write a program in C to print all the alphabets using pointer.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.