结构体:
结构体是一些不同数据类型组成的的集合。
结构体的定义:
struct
{
char name;
int age;
char sex;
int phonenum[15];
}student1;
这是一个简单的结构体。这个声明创建了一个交student的变量,它包含三个成员:姓名,年龄,性别,手机号码。
结构成员的直接访问:
结构变量的成员是通过点操作符来访问的。student.name 访问的是结构体student中的name成员。
结构成员的间接访问:
如果现在有一个指向结构体的指针,我们可以使用->操作符来访问结构体中的成员。如:cp->age;
结构体的自引用:
struct student
{
char name;
int age;
char sex;
int phonenum[15];
struct student a;
};
这样的引用是非法的。成员a是一个完整的结构体,它的内部又包含一个a,而a又是一个完整的结构体,这样下去没完没了,显然是非法的。解决办法就是把a声明为一个指向结构体类型的指针。
作为函数参数的结构体
结构体是一个标量,把结构体作为参数传递给一个函数是合法的,但是不建议这样做,它的效率很低。
但是我们可以可以给函数传递一个指向结构体的指针来作为参数。指针一般情况下要比结构体所占内存小的多,把它压到堆栈上能很显著的提高效率。另外,如果函数参数被多次调用,我们可以把它声明为寄存器变量,进一步提高指针传递方案的效率。
位段:
位段的声明和结构体类似,但它的成员是一个或多个位的字段。位段成员必须声明为int,signed int 或unsigned int(VC中默认int默认未signed int)在成员名的后面是一个冒号和一个整数,这个整数指定了这个位段所占用的位的数目。
strucu mychar
{
int mychar1 :1;
int mychar2: 4;
int mychar3: 8;
}