最近在研究Linux内核模块编程,遇到最多的就是结构,屡屡碰到一些生疏的用法如位域,成员初始化,于是便想着回顾一下。
结构体是什么?结构体是一系列变量的组合,就像C++中的类,结构体的在声明时不会分配内存空间,故而在使用时需要定义结构体变量。从本质上来说,结构体变量就是一片内存空间,但是我们对这篇内存中的存放内容进行了限定。
到这就会出现两个基本问题,一是结构体变量如何定义;一是结构体变量分配的空间是多大。基于这两个问题给出如下程序进行说明:
#include <stdio.h>
struct student{
char name[15];
int age;
};
struct student student_a;
typedef struct student stu;
stu student_b;
int main(int argc, char* argv[])
{
printf("struct student size %d.\n", sizeof(struct student));
printf("student_a size %d.\n", sizeof(student_a));
printf("student_b size %d.\n", sizeof(student_b));
return 0;
}
由上述程序可以看出结构体定义与变量定义差别不大,需要注意的是变量的类型为 struct 类型名 ,struct不可忽略。然而为方便起见&#x