The structure (struct) in C is a user-defined data type that allows you to group together variables of different data types under a single name. These grouped variables, called members, are stored in contiguous memory locations (though padding might occur).
The structure is one of the most fundamental ways C supports composite data types, making it possible to represent real-world entities that have multiple, related attributes (like a person, a point in space, or a book record).
1. Defining a Structure ✍️
You define a structure using the struct keyword, followed by an optional structure tag (name), and a list of member declarations enclosed in curly braces.
Syntax:
struct tag_name {
data_type member1;
data_type member2;
// ... more members
};
Example (Defining a structure for a Book):
struct Book {
char title[50]; // Member 1: Array of characters for the title
char author[50]; // Member 2: Array of characters for the author
int pages; // Member 3: Integer for page count
float price; // Member 4: Floating-point for price
};
2. Declaring and Initializing Structures 🏗️
Once defined, you use the structure tag name to declare variables of that type, just like you would for int or float.
Declaration:
struct Book myBook; // Declares a variable named 'myBook' that is of type 'struct Book'
Initialization (at declaration):
struct Book anotherBook = {
"The C Programming Language", // Initializes title
"Kernighan & Ritchie", // Initializes author
272, // Initializes pages
49.99f // Initializes price
};
3. Accessing Structure Members 🎯
You access the individual members within a structure variable using the dot operator (.).
Syntax for Access: structure_variable_name.member_name
Example (Accessing and modifying members):
struct Book myBook;
// Accessing and assigning values
strcpy(myBook.title, "C Programming Guide"); // Use strcpy for strings (char arrays)
myBook.pages = 400;
myBook.price = 35.50;
// Accessing and printing values
printf("Title: %s\n", myBook.title);
printf("Pages: %d\n", myBook.pages);
4. Structures and Pointers (The Arrow Operator) ➡️
When working with pointers to structures, accessing members is done using the arrow operator (->), which is shorthand for dereferencing the pointer and then using the dot operator.
Syntax for Pointer Access: pointer_to_structure->member_name
Example (Pointer usage):
struct Book *ptrBook;
ptrBook = &anotherBook; // ptrBook now holds the address of anotherBook
// Accessing members using the arrow operator
printf("Author: %s\n", ptrBook->author); // Equivalent to (*ptrBook).author
To visualize how these different members are laid out in memory, a diagram showing contiguous memory allocation is very helpful.
Would you like to see an example of nested structures, where one structure contains another structure as a member?
0 件のコメント:
コメントを投稿