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

举报
念君思宁 发表于 2023/02/16 17:46:06 2023/02/16
【摘要】 结构体的基础知识,足够详细

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

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

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

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

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

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

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

1.结构体的基础知识!

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

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

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

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

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

2.结构体的声明!

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

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

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

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

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

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  ;

代码最后的运转结构为:

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

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

#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;
}

代码的运行结果为:

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

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

printf("name为:%s  \ngae为 : %d  \nsex为 :%s  \nheight为 :%d\n", S.name, S.age, S.sex, S.hight);  这段printf 函数里面的代码,注意书写的格式!


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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。