×

C Tutorial

C Basics

C Data Types

C Input/Output

C Operators

C Conditional Statements

C Control Statements

C Strings

C Functions

C Arrays

C Structure and Unions

C Pointers

C Preprocessor Directives

C Command-line Arguments

C File Handlings

C Graphics

C Advance Topics

C Tips and Tricks

C Important Topics

C Practice

Nested Structure with Example in C language

This article talks about one usage of structures in C. This will give a brief about a highly efficient way to use structures in C.

While structures in C contain homogeneous data types, they can also contain a structure(s) inside them. We can declare a structure inside a structure as shown below:

Nested Structure Example 1

struct top{    
	int a;
	int b;
	struct inside_top object;
};

Above is the declaration for a structure which contains instance of another structure. Let's take the other structure's declaration like below and we will see then how can we use them.

Nested Structure Example 2

struct inside_top{    
    int a;
};

An object created for the structure top will have access to all the members of the structure inside_top. Let’s see this with the help of a program. We will use the above two structures in this program.

Nested Structure Example 3

int main()
{
    struct top ObjectOne;
    
    ObjectOne.a=101;
    ObjectOne.b=201;
    
    //below will show you how can we access the elements of inside_top
    ObjectOne.object.a=301;
    
    printf("%d\n%d\n%d\n",ObjectOne.a,ObjectOne.b,ObjectOne.object.a);

    return 0;
}

Output

101
201
301

What we see above is called Nesting of Structures or sometimes referred a Nested Structures. In a similar fashion we can also create structure which contains an instance of union inside it. The special properties of union make this combination very useful. Below is one such example:

Nested Structure Example 4

#include <stdio.h>

struct Element{
    int a;
        union{
                char Vals[4];
                int AllVals;
            }ObjForVal;
}ObjForElement;

int main()
{
    char i;

    for(i=0;i<4;i++)
    {
        ObjForElement.ObjForVal.Vals[i]=0x50+i;
        printf("%x\n",ObjForElement.ObjForVal.Vals[i]);
    }

    //Now if one is aware of the feature of union they can use the below example
    printf("%x\n",ObjForElement.ObjForVal.AllVals);
    printf("%x\n %x\n",ObjForElement.ObjForVal.AllVals, ObjForElement.a );
    
    return 0;
}

Output

50
51
52
53
53525150
53525150
 0

This nesting can be of any size. With size I mean we can have a structure containing many structures. Applications where one needs to store multiple sets of values for one combination and yet having many such combinations. There can be any number of combinations created based on the usage in the application using structures and unions.


Related Tutorials



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.