c语言结构体

C语言结构体的定义与使用

c语言结构体(struct)

C语言的结构体(struct)从本质上讲自定的数据类型,只不过这种数据类型比较复杂,是由int、float、char等基本数据类型组成。是一种聚合数据类型。
在实际开发中,我们可以将一组类型不同,但是用来描述同一件事物的变量放到结构体中。比如:学生有名字、年龄、身高、成绩等多个属性。使用结构体之后,就不需要零散定义多个变量,可以将他们都放到结构体中。

结构体的定义

基本格式

struct 结构体名{
结构体所要包含的数据类型
};

//基本定义
struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
};
//1.定义多个结构体变量用逗号隔开
struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
}tea1,tea2;
//2.也可以在下面用变量定义 格式 struct 结构体名 变量名
struct Teacher tea3,tea4;

注意:在定义的时候最好给个初始值不然就会出现乱码或者在结构体创建的时候就开始定义

初始赋值为0或者NULL(两种)

struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
};

int main()
{
   
   
    struct Teacher tea2 = {
   
   .name = "", .age = 0, .job = NULL}; // 初始化
    printf("%s %d %s\n", tea2.name, tea2.age, tea2.job);
}


------------------------------------------------------------
struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
} stu1 = {
   
   "", 0, NULL}, stu2; //写跟不写初始值是一样

//两种写法一样
struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
} stu3, stu4 = {
   
   "sss", 18, "fffff"};
int main()
{
   
   
    printf("%s %d %s\n", stu1.name, stu1.age, stu1.job); //"\0" 0 NULL
    printf("%s %d %s\n", stu2.name, stu2.age, stu2.job);   // "" 0 NULL
    printf("%s %d %s\n", stu3.name, stu3.age, stu3.job); //"" 0 NULL
    printf("%s %d %s\n", stu4.name, stu4.age, stu4.job);   // "sss", 18, "fffff"
    struct Teacher tea2; //但是这里不给初始值就会乱码
    printf("1=%s %d %s\n", tea2.name, tea2.age, tea2.job); // 乱码 0 乱码
    
}

清空结构体让其赋初始值

...//头文件
struct Teacher
{
   
   
    char name[180];
    int age;
    char *job;
};

int main()
{
   
   
    struct Teacher tea2;
    memset(&tea2, 0, sizeof(tea2)); // 清零
    // 现在可以安全地读取这些值
    printf(" %s %d %s\n", tea2.name, tea2.age, tea2.job); //"\0" 0 NULL  因为清空了所以有的初始值
    return 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我斌哥哥

给打赏的我会单独一对一讲解

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值