Linux C 结构体

结构体

一、复合类型与结构体

复合类型的含义:在编程语言中,最基本的、不可再分的数据类型称为基本类型,例如整型、浮点型。根据语法规由基本类型组合而成的类型称为复合类型。

结构体的含义:“结构”是一种构造类型,它是由若干“成员”组成的。它每一个成员可以是一个基本数据类型或者又是一个构造类型。

结构体的基本语法为:

struct 结构名

{成员列表};

例如:定义和访问结构体。

main()

{

struct complex_struct{ double x,y;}z;

double x=3.0;

z.x=x;

z.y=4.0;

printf("struct value:z.x=%d z.y=%d\n",z.x,z.y);

}

结果显示:struct value:z.x=3.000000 z.y=4.000000

结构类型变量的说明三种方法:

1.先定义结构在说明变量。

struct stu
{
int id;
char *name;
char *sex;

};

int _tmain(int argc, _TCHAR* argv[])
{
struct stu boy;
boy.id=1001;
boy.sex="男";
printf("%s",boy.sex);

getchar();


2.在定义结构类型的同时说明结构变量

struct 结构名

{成员列表}变量名列表;

3.直接说明结构变量。

struct

{成员列表}变量名列表;


二、嵌套结构体

结构体也是一种递归定义:结构体的成员具有某种数据类型,而结构体本身也是一种数据类型。换句话说,结构体的成员可以使另一个结构体,即结构体可以嵌套定义。

例如:我们在复数的基础上定义复平面上的线段。

struct segment

{

struct complex_struct start;

struct complex_struct end;

};

初始化也可以嵌套,因此嵌套结构体可以潜掏地初始化,例如:

struct segment s={{1.0,.2.0},{4.0,6.0}};

也可以平坦地(Flat)初始化。例如:

struct  segment s={1.0,2.0,4.0,6.0};

甚至可以把两种方式混合使用(这样可读性很差,应该避免):

struct  segment s={{1.0,2.0},4.0,6.0};

利用C99的新特性也可以做Menberwise Initialization,例如:

struct  segment s={.start.x=1.0,.end.x=2.0,};

访问嵌套结构体的成员要用到多个“.”运算符,例如:

s.start.t=RECTANGULAR;

s.start.a=1.0;

s.start.b=2.0;

猜你喜欢

转载自blog.csdn.net/qq706352062/article/details/79698978