vlambda博客
学习文章列表

C语言第六天:结构体变量与链表1

第六天

1.结构体

1.1结构体:用于保存多个不同类型数据的高级类型。

1.2一般格式:

struct 结构体类型名

{

    数据类型    变量名1;

    数据类型    变量名2;

    ................

    数据类型    变量名n;

};

注:struct是关键字;结构体类型名是自己给这个结构体取的名字;类型名的定义只要遵循C语言标识符即可;每个变量声明以;结尾,成为结构体的成员变量。

1.3结构体的成员变量

结构体类型可以规定计算机去按照怎样的格式来保存数据。想保存什么就定义什么样的结构体。

例子:

struct    computer

{

    int   monitors_sizes;

    char   cpu_type[20];

    int   memory_size;

};

1.4结构体变量

1.4.1变量声明的方式

结构体类型名    结构体变量名;

例子1:第一种方式

定义一个人的姓名,性别,年龄

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

};

定义父母,自己的姓名,性别,年龄

struct    my_home    dad;

struct    my_home    mom;

struct    my_home    me;

例子2:第二种方式

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

}dad,mom,me;

例子3:结构体的嵌套

定义一个人的姓名,性别,年龄

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

};

定义父母,自己的姓名,性别,年龄

struct    home_member

{

    char   name[10];

    char   sex;

    int   years_old;

    struct    my_home    dad;

    struct    my_home    mom;

    struct    my_home    me;

};

1.4.2变量的初始化

标准写法:

结构体类型名    结构体变量名=

{

    成员变量1的值;

    成员变量2的值;

    ...............

    成员变量n的值;

};

例子:

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

};

struct    my_home    me=

{

    "huangpengyu";

    'M';

    20;

};

1.4.3取结构体成员运算

a.表示形式:结构体变量   .   结构体成员变量;

注:形式中的   .   是取结构体成员运算符。

b.赋值运算

表示形式:结构体变量   .   结构体成员变量=值;

例子:

#include    <stdio.h>

int    main()

{

//定义结构体类型

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

};

//变量初始化

struct    my_home    me=

{

    "huangpengyu";

    'M';

    20;

};

//打印

printf("name:%s\n",me.name);

printf("sex:%c\n",me.sex);

printf("years_old:%s\n",me.years_old);

//赋值

me.name[0]='h';

me.name[1]='u';

me.name[2]='a';

me.name[3]='n';

me.name[4]='g';

me.name[5]='p';

me.name[6]='e';

me.name[7]='n';

me.name[8]='g';

me.name[9]='v';

me.sex='F';

me.years_old=19;

//打印

printf("name:%s\n",me.name);

printf("sex:%c\n",me.sex);

printf("years_old:%s\n",me.years_old);


return  0;

}

在编译器上运行下,比较以下结果。

1.4.4结构体数组(只考虑一维结构体数组)

表示形式:结构体类型名    数组名[表达式];

例子:打印学校50名同学的信息

#include    <stdio.h>

int    main()

{
//结构体类型定义

struct    student

{

    char   name[10];

    char   sex;

    int   years_old;

};

//定义结构体数组

struct    student    student[50];

//输入成绩

for(i=0;i<50;i++)

{

printf("name=");

scanf("%s",student[i].name);

printf("sex=");

scanf("%c",student[i].sex);

printf("years_old=");

scanf("%d",student[i].years_old);

printf("\n");

}

//输出成绩

for(i=0;i<50;i++)

{

printf("name:%s\n",me.name);

printf("sex:%c\n",me.sex);

printf("years_old:%s\n",me.years_old);

};


return  0;

}
1.4.5结构体指针

a.一重结构体指针

表示形式:结构体类型*结构体指针名

注:与前面不同,中间变成了*,它表示指针定义的表示符号。

struct    my_home    me;

struct    *p_my_home;

p_my_home=&me;

b.使用结构体指针取结构体数据

例子:取出p_my_home所指的结构体数据中的结构体成员name的值

表示形式:(*p_my_home).name

简单形式:p_my_home->name


小题目:使用结构体指针打印我的信息

#include    <stdio.h>

int    main()

{

//定义结构体类型

struct    my_home

{

    char   name[10];

    char   sex;

    int   years_old;

};

//变量初始化

struct    my_home    me=

{

    "huangpengyu";

    'M';

    20;

};

//定义结构体指针变量

struct    my_home    *p_me;

p_me=&me;

//打印

printf("%s\n",(*p_me).name);

printf("%c\n",(*p_me).sex);

printf("%d\n",(*p_me).years_old);


return  0;


}