对嵌入式开发C语言结构体的一点总结

简介:

今天冬至居然不上班,公司的良心啊!偷笑这回有心情写博客和日志了,好了,废话不多说。直接看下文:

鉴于嵌入式开发过程中,C语言结构体的使用当然是必不可少。话说,基础什么的比你会更牛逼的算法更重要,基础不牢,地动山摇!!最本质的东西就是基础,不要学到越高级的东西却忘了最本质的东西,这样就失去了学习的意义。

接下来我将对结构体最基础的东西,如何初始化,如果打印信息做一个最基础的总结,当然结构体在内核中到处可见,随便一个可能都是你不认识的东西,归根到底,还是基础:

好了,直接上代码,我们对这个程序进行分析。奋斗


#include <stdio.h>
#include <stdlib.h>
#define NAMESIZE  32
//定义一个结构体
struct simp_st
{
	int i ;
	float f ;
	char ch ;
};

struct birthday_st
{
	int year ;
	int month ;
	int day ;
};

struct student_st
{
	int id ;
	char name[NAMESIZE];
	struct birthday_st stu1 ;	   //上面对struct birthday这个结构体进行定义了,这里才能用
	int math ;
	int chinese ;
};

int main(void)
{	
	//结构体初始化的第一种方式
	//这种方式初始化符号采用的是 .
	struct simp_st a ;
	a.i = 100 ;
	a.f = 10.2f ;
	a.ch = 'a' ;
	struct simp_st a1 = {.i=200 , .f=10.1 , .ch='d'};	
	//结构体初始化的第二种方式
	//这里定义了一个结构体变量b ,然后对里面的成员进行初始化。
	struct simp_st b = {100 , 10.3f , 'b'};
	//结构体初始化的第三种方式--->指针
	//很多人直接就是struct simp_st *c ;其实这样是很危险的,你不知道的时候就定义了一//个野指针,所以建议定义任何类型的指针最好还是赋个空值。
	struct simp_st *c = NULL;
	//这里是对结构体指针变量分配相应的空间,因为指针本身没有空间。但是注意分配完//空间后当程序执行完了之后要进行内存释放,否则会造成内存泄漏!这点一点要记牢//了!
	c = malloc(sizeof(struct simp_st));
	//指针定义的初始化是 -> 这个符号
	c->i = 200 ;
	c->f = 10.4f ; 
	c->ch = 'c';
	//结构体嵌套初始化方式
	//注意啦,这种方式最常见了,在公司一个项目中,你不可能看到有单一的结构体
	//结构体都是嵌套组合在一起的,内核也是一样,结构体中还有结构体
	struct student_st  stu1= {
		1000 ,
		"Yang-Yuan-Xin",
		{2015,7,24},
		99,
		88,
	};	
	//下面输出我就不多说了,非常简单!
	printf("1.结构体初始化的第一种方式输出:\n");
	printf("a.i=%d\na.f=%.2f\na.ch=%c\n",a.i , a.f , a.ch) ;
	printf("a1.i=%d\na1.f=%.2f\na1.ch=%c\n",a1.i , a1.f , a1.ch);
	printf("2.结构体初始化的第二种方式输出:\n");
	printf("b.i=%d\nb.f=%.2f\nb.ch=%c\n",b.i , b.f , b.ch) ;
	printf("3.结构体初始化的第三种方式输出-->指针:\n");
	printf("c->i=%d\nc->f=%.2f\nc->ch=%c\n",c->i ,c->f ,c->ch);
	printf("4.结构体嵌套形式输出:\n");
	printf("stu1.id=%d\nstu1.name=%s\nstu1.stu1.year=%d\nst1.stu1.month=%d\nstu1.stu1.day=%d\n",stu1.id , stu1.name,stu1.stu1.year,stu1.stu1.month,stu1.stu1.day);
	free(c);
	return 0 ;
}

代码和注释都浏览完了,有没有什么体会呢?是不是觉得恍然大悟了?这几种方法就是使用结构体最基础最常用的方法,也是初学者上手结构体最快的方法。

关于结构体的一些深入的知识,比如说位段这个概念,还有结构体字节对齐,一般在32位操作系统中,结构体对齐方式默认是以4个字节进行对齐。还有结构体与共用体混合使用,结构体数组,结构体里包含函数等等,这些需要往后再开发或者学习中慢慢去总结和体会,由于时间限制,我就不多说了,要是有兴趣,我们可以一起讨论讨论!!!





目录
相关文章
|
6月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
347 82
|
10月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
715 14
|
10月前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
474 10
|
11月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
891 13
|
11月前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
11月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
243 6
|
11月前
|
存储 网络协议 物联网
C 语言物联网开发之网络通信与数据传输难题
本文探讨了C语言在物联网开发中遇到的网络通信与数据传输挑战,分析了常见问题并提出了优化策略,旨在提高数据传输效率和系统稳定性。
|
11月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
409 2
|
11月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
235 1