结构变量是一种可以存储多个不同类型数据的自定义数据类型。结构体的每个成员变量可以是不同的数据类型,但它们必须逐一声明,然后才能按顺序访问这些成员。你可以通过一条结构定义语句定义一个结构,然后定义结构变量,并为结构变量分配内存。
结构体定义语句通过关键字 struct 定义,其一般形式为:
struct [structure tag] member definition;
member definition;
...
} [one or more structure variables];
其中,structure tag 是可选的,每个 member definition 是标准的变量定义方式,比如 int i; 或 float f; 或其他有效的变量定义。
结构变量可以提高程序的可读性和可维护性。它可以将不同但相关联的变量组合成一个结构,并给这个结构命名,以便更好地组织代码,更容易访问。通过结构体,可以把多个变量作为整体进行处理,同时可以在程序中定义自己需要的新数据类型,方便数据的管理。
当你定义了结构体之后,你可以使用结构体名来定义一个结构体变量。但是,结构体变量使用一种特殊的方法来访问其成员,使用点号(.)来访问结构体成员。
struct Books char title[50]; char author[50];
char subject[100];
int book_id;
} book;
...
strcpy(book.title, "C Programming");strcpy(book.author, "Nuha Ali");
strcpy(book.subject, "c programming tutorial");
book.book_id = 6495407;
在函数中传递结构变量时,不能直接传递结构变量本身,而是应该传递结构变量的地址。这样可以避免在函数调用时浪费系统开销,还能直接操作原始结构变量。
struct Books char title[50]; char author[50];
char subject[100];
int book_id;
};
// 定义函数,该函数以结构体指针作为参数
void printBook(struct Books *book)
printf("Book title : %s\n", book->title); printf("Book author : %s\n", book->author);
printf("Book subject : %s\n", book->subject);
printf("Book id : %d\n", book->book_id);
int main()
struct Books Book1; // 定义结构体变量
//(...)
printBook(&Book1); // 传递结构体指针
}