【C语言天天练(十)】结构体
引言:数据常常以成组的形式存在。在C中,使用结构能够把不同类型的值存放在一起。
结构的声明有两种
1、struct SIMPLE{
int a;
char b;
float c;
};然后用标签SIMPLE去声明结构体变量。
2、typedef struct{
int a;
char b;
float c;
}Simple;然后用Simple去声明结构体变量。
此时Simple是个类型名。而不像上面的SIMPLE是个标签。
结构成员能够是标量、数组、指针甚至是其它结构。
结构成员的直接訪问用点操作符(.)訪问。比如Simple a;a.a或a.b或a.c。
结构成员的间接訪问用->操作符訪问,它是针对结构指针使用的。比如Simple *a。a->a或a->b或a->c。
结构的自引用是结构的成员里包括结构本身,但这样的包括不能是直接包括,而应该包括的是指向该结构的指针。
结构作为函数參数时。一般使用指向结构的指针。向函数传递指针的缺陷在于函数如今能够对调用程序的结构变量进行改动。假设不希望如此。能够在函数使用constkeyword来防止这类改动。
并且。传递结构指针比传递结构本身更有效率。
总结:
1、具有同样成员列表的结构声明产生不同类型的变量。
2、使用typedef为一个子引用的结构定义名字时应该小心。
3、向函数传递结构參数是低效的。
4、把结构标签声明和结构的typedef声明放在头文件里。当源文件须要这些声明时能够通过#include指令包括。
5、结构成员的最佳排列形式并不一定就是考虑边界对齐而浪费内存空间最少的那种排列形式。