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

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

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


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


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


对于结构体,主要是用函数 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 函数里面的代码,注意书写的格式!


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


相关文章
|
30天前
|
存储 大数据 程序员
实验验证C语言中结构体与共用体的差异
实验验证C语言中结构体与共用体的差异
30 0
|
10月前
|
程序员 C语言 C++
c语言学习第三十二课---内存开辟位置与柔性数组
c语言学习第三十二课---内存开辟位置与柔性数组
65 0
|
6月前
|
存储 安全 Java
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
48 0
|
11月前
|
C语言
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(下)
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(下)
278 0
|
11月前
|
存储 编译器 C语言
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)(上)
【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)
107 0
|
11月前
|
存储 C语言
|
11月前
学C的第五天(初识指针,内存产生内存单元地址过程,指针函数介绍和其大小;结构体补充)-1
13*指针: 13.1 -- 内存: 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。 【32位操作系统的内存由32根地址线产生的高低电位(1/0), 划分为2的32次方个地址(编号\指针),一个地址为一个字节, 等于8比特。】
|
11月前
结构体基本知识
结构体基本知识
|
存储 编译器 C语言
【C++】内存对齐原理及详解(附带相关案例)
【C++】内存对齐原理及详解(附带相关案例)
【C】内存函数——知识点大全(精炼,全面,基础)
【C】内存函数——知识点大全(精炼,全面,基础)