【C语言】第一章·第十节 初始结构体(struct)

文章介绍了C语言中的结构体概念,通过示例展示了如何创建和初始化结构体,以及如何通过指针操作结构体成员变量。结构体指针的使用包括使用.-操作符和*解引用操作符来访问成员。
摘要由CSDN通过智能技术生成

咱么章节不是教学结构体是让咱们新手玩家看一下结构体是啥样的以至于可以看懂后面的章节具体细节请看第二章 结构体(struct) 有基础的小伙伴可以快速过一遍


"struct"结构体可以让C语言创建新的类型

老习惯,用例子说明:创建一个学生

struct stu{
    char name[20];
    int age;        //内部的变量称为成员变量
    double score;
};//在1-5行代码中咱们就建好了一个学生的结构体。
int main(){
    struct stu s = {"张三",20,88.5}; //结构体的创建和初始化,s是结构体变量 struct stu是该结构体类型
    printf("%s %d %lf\n",s.name,s.gae,s.score);
    //结构体成员变量的调用:结构体变量.成员变量

    return 0;
}

结合指针的结构体

在上节中咱们讲到了指针,那咱们这节可以创建一个指针来指向结构体。在看不才创建前小伙伴们也可以试着自己思考来创建。

咱们用上面的例子来创建

struct stu{
    char name[20];
    int age;        //内部的变量称为成员变量
    double score;
};//在1-5行代码中咱们就建好了一个学生的结构体。
int main(){
    struct stu s = {"张三",20,88.5}; //结构体的创建和初始化,s是结构体变量 struct stu是该结构体类型
    printf("%s %d %lf\n",s.name,s.gae,s.score);
    //结构体成员变量的调用:结构体变量.成员变量

    int a = 10;
    int *pa = &a  //在咱们之前创建指针的时候是 类型 * 指针变量 这样创建的
    struct stu *ps = &s  //咱们再创建结构体指针也是一样的 也是用 类型 * 指针变量 这个模式来创建
                  //struct stu是该结构体的结构类型 所以咱们创建时:strucr stu *指针变量。是这样来创建的 
    
return 0;
} 

在使用结构体指针就和咱们普通调用结构体又不太一样

结构体指针的使用

在上面的例子中咱们已经初步掌握了结构体指针的创建,那么咱们继续用上面的代码来讲解一下结构体指针的使用

在上面的结构体使用中咱们是用了:结构体变量.成员变量 这个模式。这个结构体变量是一个普通变量,所以咱们就可以用"."这个单目操作符来连接 结构体变量和成员变量

那再咱们是指针的情况下我们就吧"."这个单目操作符改为了"->"箭头操作符其他不变。

即:结构体变量->成员变量

struct stu{
    char name[20];
    int age;        //内部的变量称为成员变量
    double score;
};//在1-5行代码中咱们就建好了一个学生的结构体。
int main(){
    struct stu s = {"张三",20,88.5}; //结构体的创建和初始化,s是结构体变量 struct stu是该结构体类型
    printf("1. %s %d %lf\n",s.name,s.gae,s.score);
    //结构体成员变量的调用:结构体变量.成员变量

    int a = 10;
    int *pa = &a  //在咱们之前创建指针的时候是 类型 * 指针变量 这样创建的
    struct stu *ps = &s  //咱们再创建结构体指针也是一样的 也是用 类型 * 指针变量 这个模式来创建
                  //struct stu是该结构体的结构类型 所以咱们创建时:strucr stu *指针变量。是这样来创建的 
    printf("2. %s %d %lf\n",ps->name,ps->age,ps->score); 
       
    return 0;
} 

但是在前面的第九节咱们就讲过说,用一个解引用操作符来解开指针咱们就可以得到变量的存储空间,那这里也可以适用,咱么把ps改为(*ps)那么我们就可以用"."这个操作符来连接 结构体变量和成员变量

如下

struct stu{
    char name[20];
    int age;        //内部的变量称为成员变量
    double score;
};//在1-5行代码中咱们就建好了一个学生的结构体。
int main(){
    struct stu s = {"张三",20,88.5}; //结构体的创建和初始化,s是结构体变量 struct stu是该结构体类型
    printf("1. %s %d %lf\n",s.name,s.gae,s.score);
    struct stu *ps = &s  //咱们再创建结构体指针也是一样的 也是用 类型 * 指针变量 这个模式来创建
                  //struct stu是该结构体的结构类型 所以咱们创建时:strucr stu *指针变量。是这样来创建的 
    printf("2. %s %d %lf\n",ps->name,ps->age,ps->score); 
    printf("3. %s %d %lf\n",(*ps).name,(*ps).age,(*ps).score); 
    return 0;
} 

运行结果11行和12行都是一样的而且: ps->name 和 (*ps).name是一样的意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值