Please note, this is a STATIC archive of website www.w3resource.com from 19 Jul 2022, cach3.com does not collect or store any user information, there is no "phishing" involved.
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 which contents are pointer to structure.

Pictorial Presentation:

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

Sample Solution:

C Code:

#include <stdio.h>
struct employee
{
char *empname;
int empid;
};

int main()
{
 	printf("\n\n Pointer : Show a pointer to an array which contents are pointer to structure :\n"); 
	printf("-----------------------------------------------------------------------------------\n");

	static struct employee emp1={"Jhon",1001},emp2={"Alex",1002},emp3={"Taylor",1003};
	struct employee(*arr[])={&emp1,&emp2,&emp3};
	struct employee(*(*pt)[3])=&arr;

	printf(" Exmployee Name : %s \n",(**(*pt+1)).empname);
	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");
	printf(" Employee ID :  %d\n",(*(*pt+1))->empid);	
	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.



C Programming: Tips of the Day

Static variable inside of a function in C

The scope of variable is where the variable name can be seen. Here, x is visible only inside function foo().

The lifetime of a variable is the period over which it exists. If x were defined without the keyword static, the lifetime would be from the entry into foo() to the return from foo(); so it would be re-initialized to 5 on every call.

The keyword static acts to extend the lifetime of a variable to the lifetime of the programme; e.g. initialization occurs once and once only and then the variable retains its value - whatever it has come to be - over all future calls to foo().

Ref : https://bit.ly/3fOq7XP