Learn to define a structure using the `struct` keyword and access its members using the dot (`.`) and arrow (`->`) operators.
A structure is a powerful feature in C that allows you to bundle together one or more variables of potentially different data types into a single, user-defined type. It's a way to create a record or a composite data type that represents a real-world entity. To define a structure, you use the `struct` keyword, followed by a name (or tag) for the structure, and a list of member variables enclosed in curly braces. For example, to represent a point in a 2D coordinate system, you could define: `struct Point { int x; int y; };`. This creates a new type called `struct Point`. To create a variable of this type, you write `struct Point p1;`. Once you have a structure variable, you can access its individual members using the **dot operator (`.`)**. For instance, `p1.x = 10;` assigns the value 10 to the `x` member of the `p1` variable, and `p1.y = 20;` assigns 20 to the `y` member. When you are working with a pointer to a structure, accessing its members is slightly different. You could dereference the pointer first and then use the dot operator, like `(*ptr).x`, but C provides a more convenient and readable syntax: the **arrow operator (`->`)**. If you have `struct Point *ptr = &p1;`, you can access the members directly with `ptr->x` and `ptr->y`. This is the preferred method for accessing members through a pointer. Structures are fundamental for organizing complex data in a logical and manageable way.