简略的结构体讲解(基于C语言)更新时间:2019-10-25

                                                                                              前置技能:点点指针

结构体的定义和使用

(1)一般形式

他的一般格式只这样的(记得struct关键字哟):

struct 结构体名

{

类型名1 成员名1;  //成员类型可以是基本类型或构造型

类型名2 成员名2;

...

类型名n 成员名n;

};    //注意不要忘记此处的;

比如我们要建立一个人的结构体,它就至少包括,身高体重年龄名字等等数据,就可以如下构造:

struct Human//一个名字为Human的结构体
{
    double Tall;//身高
    double Weigth;//体重
    int Old=666;//年龄
    char Name[200];//姓名
    //*****等都可以加入的
};

(2)定义结构体类型的变量、指针变量和数组

定义结构体类型变量有以下三种方法

方法一:在定义结构体类型时,同时定义变量。

struct Human//一个名字为Human的结构体
{
double Tall;//身高
double Weigth;//体重
int Old;//年龄
char Name[200];//姓名
//*****等都可以加入的
}stu1,*stu,stus[5];//分别定义了该类型的普通变量,指针,和结构体数组

方法二:先定义结构体类型,再定义该类型的变量

struct Human//一个名字为Human的结构体
{
double Tall;//身高
double Weigth;//体重
int Old;//年龄
char Name[200];//姓名
//*****等都可以加入的
};
Struct Human stu1,*stu,stus[5]; //分别定义了该类型的普通变量,指针,和结构体数组

方法三:用类型定义符typedef先给结构体类型名别名,再用别名定义变量

typedef struct Human//一个名字为Human的结构体
{
double Tall;//身高
double Weigth;//体重
int Old;//年龄
char Name[200];//姓名
//*****等都可以加入的
}Stu;
Stu stu1,*stu,stus[5]; //分别定义了该类型的普通变量,指针,和结构体数组

这里的typedef就是把Human这个类型的结构体,命名为了Stu,Stu就等价于struct Human了。

typedef还可以把一些类型名很长的简化,比如long long可以变成LL。

typedef long long LL;

注意:

别把结构体类型跟变量弄混了。

1.类型:不分配内存;变量:分配内存;

2.类型:不能赋值、存取、运算;变量:可以;

3.结构体可以嵌套;

4.结构体成员名与程序中变量名可相同,不会混淆。

嵌套结构体就是可以在一个结构体了,包含另一个结构体的类型的。

typedef long long LL;
struct date{
    int month;
    int year;

};


struct student{
    int num;
    char name[20];
    struct date birthday;  /*结构体可嵌套*/

}Stu;

(3)给结构体变量赋初值

一般格式:结构体类型 结构体变量名 = {初始表值};

struct [Student] {
    char name[10];
    char sex;
    int age;
    float score;
}stu[2]={{"ddd",'f',22,90},{"Su",'M',20,85}};

不过很不推荐这种,emmm。建议在结构体建立的时候就赋好初值,如下:

#include <stdio.h>
struct Human//一个名字为Human的结构体
{
    double Tall;//身高
    double Weigth;//体重
    int Old=666;//年龄
    char Name[200];//姓名
    //*****等都可以加入的
};
int main()
{
    struct Human a;
    printf("%d ",a.Old);
    return 0;
}

方法二:

struct student{
    char name[10];
    int age;
    float score[5],ave;
};
struct student  Stu = {"ZhangSan",22,99,78,99,76,88};

(4)引用结构体变量中的成员的访问

a.结构体变量名·成员名:stu1.name

b.结构体指针变量—>成员名:ps—>name

c.(*结构体指针变量).成员名:(*ps).name

d.结构体变量数组名.成员名:stu[0].name

注:1.求结构体类型数据的字节数   sizeof(变量名或类型名);

大概就是这些把,emmm构造函数哪些好像是c++的?忘了,下次更新就接着讲链表把。。

01-06 08:20