【C语言】结构体初级使用

【C语言】结构体初级使用,第1张

结构体类型定义是一条C语言语句,分号不能省略
结构体类型定义的一般形式:

struct 结构名
{
    结构成员表;
};
例如:
struct birthday
{
    int year,month,day;
};

其中,还可以结构体套结构体
struct student
{
    int xuehao;
    char name[30];
    struct birthday; //结构体类型也可以是结构成员
    int score[4];
    double average;
};

注意:结构体中的数据类型并没有分配内存空间,只有在被使用到的时候才会分配存储空间
 

结构体类型变量的定义:

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

//接上面定义的 struct student
struct student s1;
scanf("%d",&s1.xuehao);

法2.两个在一条语句中实现

struct student
{
    int xuehao;
    char name[30];
    struct birthday;
    int score[4];
    double average;
}s1,s2;//直接在这里声明结构体变量

结构体变量的初始化:在声明变量的同时给变量赋初值
赋值是整体进行的,所赋值类型必须对应,用逗号作间隔,若没有赋初值,则被系统赋值为0

struct student s1={202101,"zhangsan",{2003,04,12},{96,87,44}};

结构体变量的引用

1.整体引用,两个同类型间,s1 = s2;
注意:结构体变量被赋初值或声明后,不能再用表达式列表对结构体变量进行整体赋值

如 s1={202101,"zhangsan",{2003,04,12},{96,87,44}}; 是语法错误的

2.结构体成员变量引用:
结构体变量名.成员名 如:s1.xuehao

结构体数组:

struct student
{
    int num;
    char name[20];
};
struct student students[3]=
{
    {202201,"1hao"},    //对应students[0]
    {202202,"2hao"},    //对应students[1]
    {202203,"3hao"}    //对应students[2]
};//使用时与数组一样

结构体指针:

//定义结构体student类型的数组s, 单个student类型的变量s1,以及结构体类型的指针
struct student s[50],s1,*p;
//此时 p 还没有初始化,可以执行下面任一语句为p赋值
    p = &s1;    //将s1的首地址赋给p
    p = s;      //p指向数组s的第一个元素 s[0]
    p =&s[0];   //p指向s[0]

此时访问结构体成员的方式有三种

1.s[0].成员名
2.(*p).成员名
3.p->成员名
//三种方式等价

"." 运算符优先级高于" * ",所以括号不能省略

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1323814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存