结构体及位段

来源:互联网 发布:vue和java开发 编辑:程序博客网 时间:2024/06/08 05:18

结构体:

结构体是一些不同数据类型组成的的集合。

结构体的定义:

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;}

  



原创粉丝点击