当前位置: 首页 > article >正文

c语言笔记 结构体基础

目录

基础知识

结构体定义


基础知识

        在c语言中变量是有类型的,比如整型,char型,浮点型等,这些都是单一的类型,那么如果说我要定义一个学生的信息,那么这些单一的类型是不足以表达一个学生的全部信息,所以我们就要用到结构体的知识,结构体是包含了很多种类型的一种结构,就像是一个大杂烩里面什么东西都有,比如指针,整型,数组,char型甚至是放结构体,唯一不能放的是函数,结构体里面的类型不能再创建的时候赋值,结构体只是创建类型。

结构体定义

struct 结构体标签
{
    成员1,
    成员2,
    成员3
};  //定义了一个结构体类型  此时还不是结构体变量   
结构体标签:用来区分不同的结构体,就像是人的名字一样
成员:可以是任意的类型,char,整型,数组等 甚至是结构体

结构体类型就跟其他的类型是一样的,例如:

结构体的变量类型面加的符号是' ; --- ' 而枚举变量后面的符号是 ' ,';

struct student
{
    int number;
    char name[50];
    char sex[10];
};  //结构体类型

定义一个结构体变量
struct student Jack;   //Jack 就是一个结构体变量
int              a;
int 和 struct student 是一种类型  

        结构体不是系统自带的一种类型,而是我们自己自定义的,不像int类型是系统自带的,与生俱来的。

struct student
{
    成员1;
    成员2;
    成员3;   
}Jack, Pack; // 定义了两个结构体变量 Jack 和 Pack

等价于struct student{成员1;成员2;成员3;} Jack,Pack; 
这个是再定义结构体的时候定义变量  如果说是在主函数的情况下,我们应该这样定义:
#include <stdio.h>
struct node
{
    int a;
};
int main()
{   
    struct node Jack,Pack;//在主函数内这样定义正确 不要重新写一个结构体在初始化定义变量
    Jack.a= 100;                               //那样就会出现语法错误
    Pack.a =30;
    printf("%d %d \n",Jack.a,Pack.a);
    return 0;
}

        Jack就是一个结构体变量,而struct student 是一个结构体类型,就是一种类型打个比方:结构体类型就像是一张施工图的图纸,而结构体变量就是建筑物,这个建筑物是按照施工图来建造的,那么建造的每一个建筑物他们的样貌都是一样的,但是名字不一样;所以结构体变量 可以定义很多个,但是结构体类型只能有一种,一种结构体类型可以定义很多的结构体变量。

注意:

如果在结构体里面定义结构体,那么里面的结构体不用写结构体标签

struct node
{
    int a;
    float d;
    doule e;
    struct 
    {
        int b;
        int c;    
    }x; //x跟a,d,e一样是变量名
}
上面等价于下面
struct node
{
    int a;
    float d;
    doule e;
    struct {int b;int c;}  x; 
    //x跟a,d,e一样是变量名
};    此时的结构体里面的结构体的结构体标签一般是省略的

        当一个结构体a被用作另一个结构体b的内部成员,并且在外部不直接使用结构体a时,通常可以省略结构体a的标签(即结构体名)。这种情况下,结构体a作为一个匿名结构体嵌套在结构体b中。

        相关的结构体里面放结构体的表示方式在我的文章《c语言笔记 结构体内嵌套结构体的表示方式》中。


http://www.kler.cn/a/591515.html

相关文章:

  • Axios 请求取消:从原理到实践
  • 开源PACS(dcm4che-arc-light)部署教程,源码方式
  • opencv中stitch图像融合
  • 基于51单片机的手机拨号键盘模拟proteus仿真
  • MySQL实现全量同步和增量同步到SQL Server或其他关系型库
  • LeetCode203移除链表
  • Android ARouter的详细使用指南
  • 【数据库】如何用索引优化查询性能
  • Linux一键安装node.js【脚本】
  • Python学习- 数据结构类型
  • 软考中级-数据库-5.1 计算机网络概述与网络硬件基础
  • springCloud使用webSocket(接收端)
  • 基于PMU的14节点、30节点电力系统状态估计MATLAB程序
  • 【数据分享】2000—2024年我国省市县三级逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)
  • Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件
  • 学术论文pdf图片中的公式如何自动识别为word
  • 提升AI性能的秘密武器:量化、蒸馏与剪枝全面解析
  • Python----计算机视觉处理(Opencv:形态学变换)
  • 深度学习视觉BEV 3D目标检测算法综述
  • oracle基础知识之表的集合运算