结构体

结构体

由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体(struct)。

出现的原因

假如我们要定义一些学生相关的东西,比如,级别,姓名,分数。那么就要定义三个变量,而且这三个变量在内存不是连续的,维护时会比较困难。传参修改值也会异常困难。结构体应运而生,结构体就可以放某个种类的一些基本性质,这些变量都会在这个结构体的内存块中,定义也会简单,维护起来也不麻烦。
结构体

结构体使用

//struct 结构体名
struct student
{
	//定义时不能赋值
    int age;
    char name[20];
    float score;
};
//注意;结束

这是一个定义,为结构体数据类型,和基本数据类型,如int是一样的,只是告诉编译器如果定义时该分配多大空间,所以不能在定义时赋值,语法出错。注意,定义是以 ; 结束。

    //定义变量且顺序赋值
    //注意不能漏关键字struct
    struct student s1 = {12,"Tom",76};
    //定义变量乱序赋值
    struct student s3 = {age:12,
    					score:81,
    					name:"Koko"};
    //先定义变量后赋值
    //.操作符赋值
    struct student s2;
    s2.age = 13;
    strcpy(s2.name,"John");
    s2.score = 87;
    //打印s1
    printf("age = %d,name = %s,score = %f\n",s1.age,s1.name,s1.score);

也可以定义一个结构体指针

    //定义结构体指针变量
    struct student *s4 = &s3;
    //->操作符赋值
    s4->age = 18;
    strcpy(s4->name,"Coco");
    s4->score = 90;

注意普通结构体变量是用.操作符赋值,指针变量使用->操作符赋值。定义变量时要带struct关键字,不然编译器不知道此为结构体数据类型,编译出错。

其他知识点

结构体可以在定义时,就定义变量

struct student
{
    int age;
    char name[20];
    float score;
}s5,s6;
//定义变量s5,s6
//与struct student s5;效果一样

定义结构体时可以不带结构体名字,但是只能在定义时定义变量

struct 
{
    int age;
    char name[20];
    float score;
}s7;

结构体数组

    //定义时赋值
    struct student s[3] = {{22,"a",91},
                           {23,"b",92},
                           {24,"c",93}};
    //定义后赋值
    s[0].age =  21;

结构体嵌套

//结构体定义
struct primStudent
{
    struct student stu;
    int height;
};
//赋值
p.stu.age = 9;

注意事项

结构体定义时不能赋值,结构体定义结束时以 ; 结束

结构体简单介绍告一段落
微信号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值