结构体的基础知识,足够详细

简介: 结构体的基础知识,足够详细

对于结构体部分,笔者也仅仅是,刚刚涉及,所了解内容也不是很多,但是借助于百度百科的内容,笔者还是能够有着更深的了解!


下面请看笔者借用百度百科的内容来给结构体的定义画上完美的句号!


结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义,文章内容链接为:结构体_百度百科!对于笔者而言,已经算是比较详细的官方解答!


对于结构体,主要是用函数 struct 来进行使用!


但是笔者在著名的C++网站上没有搜索到关于 : struct  的知识,所以未免具有写遗憾!


0a2653c851af460fa595bd959398a8f1.png


因此我想结构体应该是C语言所独有的吧!并不在C++的内容范围之内!


下面内容均来自笔者所学:及其感悟!


1.结构体的基础知识!


结构是一些值的集合,这些值成为成员变量,结构的美国成员可以是不同类型的变量!


结构体;  可以用来描述复杂的对象!  struct


复杂的对象: 比如:人  :年龄,身高 , 体重…………


                             书    :作家 ,定价  ,出版社  ,  书名…………


这些都能称为:复杂对象!


2.结构体的声明!


在下述代码段中,为:结构体定义变量时候的格式


//结构体的声明
struct tag  //tag 为结构体标签
{
  member _list;   //成员列表
}variable_list;    //变量列表

在上述代码段中,我们需要注意的是,当我们输入 { }  键盘敲击回车的时候,就会自动带上分号 (  ; )  ,不是人为控制的!但是我们也不要将其删除,否则将会出现格式的错误!


下图标记部分则为:笔者着重强调部分!


6de278e6d6694ce5bb08e7e842b7e74b.png


下面笔者借用结构体来写一下代码,并且分析,供笔者参考:


struct stu  //学生
{
  char name[20];    //姓名
  int age;      //年龄
  char sex[5];      //性别
  int hight;     //身高
}S4;  //全局变量

在这里面,定义了学生的姓名,年龄,性别,身高等!用来修饰一个学生


因此我们需要注意:3。结构体成员的类型!


结构体成员可以是:标量,数组,指针,甚至可以是其他结构体(结构体的嵌套)等!


4.结构体的定义和初始化


下面笔者来对一个小小的结构体进行初始化,来带领大家分析认识结构体的定义和初始化!!


请看笔者代码:


#include <stdio.h>
struct point
{
  int x;
  int y;
}p;
int main()
{
  struct point p = { 10,20 };
  printf("x=%d y=%d\n", p.x , p.y);
  return 0;
}

这段代码,仅仅是笔者随意而写的,带领大家认识并且了解一下结构体的定义和初始化问题,不做其他用途!


首先,在main 函数里面,通过  struct point p = { 10,20 };    调用,并且初始化了 p  然后传给结构体标签 point ,在结构体里面,按照顺序赋值给  结构体里面定义的成员 x, y;(注意,传给的类型,跟在结构体里面接收的类型,需要保持一致,要不然将会出现错误),最后在用printf函数输出的时候,也要着重注意输出格式!  printf("x=%d y=%d\n", p.x , p.y);   如果格式不正确也将会出现错误,甚至程序不能正确运行的现象!注意:printf函数里面的:  p.x , p.y  之间的标点符号的应用!p.x 是指:打印结构体里面的 x  ;    p.y 是指:打印结构体里面的 y  ;


代码最后的运转结构为:


12c3b7f3f8814309a195c64f051d4445.png


上述代码的解析,笔者已经到此讲解完毕!


下面对于一些想成热打铁的读者,建议进行分析一下!


#include <stdio.h>
struct stu
{
  char name[20];    //姓名
  int age;      //年龄
  char sex[5];      //性别
  int hight;     //身高
}S; 
int main()
{
  struct stu S = { "zhangsan",20,"nan",180 };
  printf("name为:%s  \ngae为 : %d  \nsex为 :%s  \nheight为 :%d\n", S.name, S.age, S.sex, S.hight);
  return 0;
}

代码的运行结果为:


34e8d716411043c08c7ffba9fbba23de.png


至于这段代码的解析过程,笔者在此就不再做过多的讲叙!跟上述代码的解析思路过程差不多 !


不过笔者在此仍需要强调的仍是:


printf("name为:%s  \ngae为 : %d  \nsex为 :%s  \nheight为 :%d\n", S.name, S.age, S.sex, S.hight);

这段printf 函数里面的代码,注意书写的格式!


下篇博客,笔者将会介绍结构体嵌套使用,及其结构体的传参,有兴趣的读者,请进行阅读笔者下篇内容!


相关文章
|
13天前
|
存储 Java 程序员
结构体和类的内存管理方式在不同编程语言中的表现有何异同?
不同编程语言中结构体和类的内存管理方式既有相似之处,又有各自的特点。了解这些异同点有助于开发者在不同的编程语言中更有效地使用结构体和类来进行编程,合理地管理内存,提高程序的性能和可靠性。
21 3
|
15天前
|
存储 缓存 算法
结构体和类在内存管理方面有哪些具体差异?
【10月更文挑战第30天】结构体和类在内存管理方面的差异决定了它们在不同的应用场景下各有优劣。在实际编程中,需要根据具体的需求和性能要求来合理选择使用结构体还是类。
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践
|
5月前
|
编译器 C语言 C++
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
|
6月前
|
存储 大数据 程序员
实验验证C语言中结构体与共用体的差异
实验验证C语言中结构体与共用体的差异
52 0
|
11月前
|
存储 安全 Java
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
68 0
|
C语言
初始C语言(第四课时)
初始C语言(第四课时)数组:一组同类型元素的组合
54 0
|
存储 编译器 C语言
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(上)
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)
119 0
|
C语言
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(下)
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(下)
292 0
|
存储 程序员 C语言
空间属性概述 C语言
空间属性概述 C语言
89 0