欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > c语言笔记 结构体基础

c语言笔记 结构体基础

2025/3/22 2:47:42 来源:https://blog.csdn.net/2201_75840339/article/details/146350285  浏览:    关键词: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语言笔记 结构体内嵌套结构体的表示方式》中。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词