6.结构体

作者: 一漫116 | 来源:发表于2017-08-06 14:07 被阅读30次

一、定义

C 数组允许定义可存储相同类型数据项的变量

结构是 C 编程中另一种用户自定义的可用的数据类型

它允许存储不同类型的数据项。

结构体:是一种数据类型,是我们根据自己的需要构造出来的数据类型,它是由若干个数据项组合而成的复杂数据类型,这些数据项称为该结构类型的成员。

定义一个结构:

格式:

struct 结构体名

{

    datatype 变量名1;

    datatype 变量名2;

    ....

};

//datatype是c语言中有效的数据类型,如:int,char,float

例:

struct student

{

    int num;                      =>数据类型,  int char 一样的用

    char name[20];

    char sex;

    float score;//数据成员

};

注:

1.定义结构并不分配空间,它仅仅是个数据类型

2.通常位我们把结构的定义放在include的后面,如果是多文件的话会放在头文件中去(.h)

3.其中{}后面有分号;

4.结构体类型名与它的成员名可以同名。

例:

struct test

{

    int test;

};

5.结构体成员名与其他变量名相同也可以

6.结构体类型名称是"struct 结构体名" ,注意struct 关键字不能省略

7.结构体可以嵌套,即结构体里数据类型也可以是一个结构体类型,但是不能是自身的结构体类型

struct birthday

{

    int year;

    int month;

    int day;

};

struct student

{

    int num;

    char name[20];

    struct birthday  bd;

};

struct student

{

    int num;

    struct student stu2;  X

};

定义结构体变量

1.先定义结构体类型,再定义结构体变量

例:

struct student

{

    int num;

    char name[20];

    float score;

};

struct student      stu1,stu2;  //定义了stu1,stu2  2个变量

2.在定义结构体类型的同时定义结构变量、

例:

struct student

{

    int num;

    char name[20]

}stu1,stu2;

struct student    stu3;

3.直接定义结构体变量

struct    //无名结构体

{

      int num;

      char name[20];

}stu1,stu2;

表示结构体变量成员的一般形式:  结构体变量.成员名

例:

struct data

{

    int year;

    int month;

    int day;

};

struct man

{

    char name[20];

    struct data weding_date;

};

struct man man1,man2;

访问该结构体变量成员;

man2.weding_date.year  一级一级访问。

man2.name

给结构体变量赋值:

1.结构体变量的初始化:定义结构体变量的同时给它赋值

int a[5]={1,2,3,4,5};

struct student  student1={1,"xxxx",'m',90};

形式一:

struct 结构体名

{

    类型 成员名;

    ...

};

struct 结构体名  结构体变量={初始化数据}

例:

struct student

{

    int num;

    char name[20];

    float score;

};

struct student stu1={1,"xxx",90};

形式二:

struct 结构体名

{

    类型 成员名;

    ...

}结构体变量名={初始化数据};

struct student

{

    int num;

    char name[20];

    float score;

}stu1={1,"xxx",90};

初始化的时候是否可以给成员变量的值不赋全?

可以,但不推荐如此

结构体变量的引用规则:

1.除了在定义变量的时候整体访问,引用的时候,不能整体访问,只能通过“变量名.成员名”的方式访问。除了情况2:

#include

//自定义的数据类型

struct student

{

char name[20];

char sex;

int age;

float score;

};

//用自定义的数据类型定义变量stu1并初始化

struct student stu1={"xxx",'m',1,90};

void main()

{

printf("%s %c %d %f\n",stu1);

}

2.

#include

//自定义的数据类型

struct student

{

char name[20];

char sex;

int age;

float score;

};

//用自定义的数据类型定义变量stu1并初始化

void main()

{

struct student stu1={"xxx",'w',1,90},stu2;

stu2=stu1;

stu2={"vvv",'m',2,89}; X

if(stu1==stu2)  X

printf("%s %c %d %.2f\n",stu2.name,stu2.sex,stu2.age,stu2.score);

}

------------------------------------------------------------------------------

int  a;      int* p=&a;          *p<=> a

int a[5];    int (*p)[5]=&a;

struct student    a;    struct student  *p=&a;    *p==a

结构体指针变量:

一个专门用来指向一个结构体变量的指针。

指向一个结构体变量的指针的值是这个结构体变量的首地址。

结构体指针变量定义的一般形式:

struct 结构体名  *p;

通过结构体指针访问该结构体变量的成员,一般形式:

结构体变量.成员名<=>(*结构体指针变量).成员名<=>

结构体指针变量->成员名

例:

结构数组:元素为结构体类型的数组

结构体数组定义的3中方式

形式一:

struct student

{

    int num;

    char sex;

    int age;

};

struct student stu[2];    <=>int a[5]

形式二:

struct student

{

    int num;

    char sex;

    int age;

}stu[30];

形式三:

struct

{

int num;

char sex;

int age;

}stu[30];

结构体数组初始化

struct student

{

    int num;

    char sex;

    int age;

};

struct student stu[]={100,'m',12,102,'w',13};

struct student stu[]={{100,'m',12},{102,'w',13}};

结构体数组的引用:

引用方式:

结构体数组名[下标号].成员名

例: stu[0].num=102;  给第一个学生的学号赋值

结构体作为函数的参数:

1.可以将结构体变量的成员的值作为参数传递给函数处理

2.将整个结构体变量作为函数的参数传递

3.可以将指向一个结构体变量的指针作为参数传递

 

 

相关文章

  • 1220学习总结

    复杂数据类型 1.结构体 2.结构体变量的初始化 3.无名结构体 4.宏定义结构体 5.结构体的嵌套 6.结构体数...

  • 6.结构体

    一、定义 C 数组允许定义可存储相同类型数据项的变量 结构是 C 编程中另一种用户自定义的可用的数据类型 它允许存...

  • 6.结构体相关

    一 C 结构体和结构体指针 eg1: 一 结构体里面定义函数 通过结构体指针访问结构体里面定义的函数。 eg2:

  • 6.类与结构体

    结构体是功能仅逊于类的数据结构,其也可以描述拥有某些属性和行为的事物,只是它的实现机制和类有着本质的区别,应用场景...

  • GO学习笔记08

    面向对象 1.匿名组合 2.同名成员 3.非结构体的匿名字段 4.指针类型 5.面向对象和面向过程 6.结构体类型...

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

网友评论

    本文标题:6.结构体

    本文链接:https://www.haomeiwen.com/subject/xngglxtx.html