无论是整型、实型还是我们的数组,它们都只能描述单一对象,无法对一个复杂对象进行描述,比如我们的学生信息,包含学生姓名(字符型数组)、学号(整型)、电话号码(整型数组)等,将需要的信息整合在一起,配合上结构体关键字(struct),这样我们就得到了一个结构体变量。合理使用结构体变量能让我们对现实世界中的信息做出更好的描述。一起看看结构体吧!🎉🎉🎉
C语言第九讲,结构体 一丶结构体的定义 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种不同数据类型的集合.可以包含不同数据.用来表示不同的方法. 例如: struct stu { TCHAR *Name; int nId; .... } 结构体是一种复合类型,为什么这么说.因为结构体是程序员来进行定义以及编写的. 结构体的构成则是基本数据类型进行构成的
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》
在写这篇文章之前,说实话,自身对结构体的用法,只会两点——就是点访问式和指针式访问结构体内部成员。这对一个搞底层的工程师来讲,显然实在太low了。不妨读者看到这里,可以停下来思索一下,看看自己对c语言结构体掌握了多少。下面是我这几天结合自己的学习而总结的一篇算比较全的关于结构体的用法,欢迎大家来吐槽。
注:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数 组的概念。
结构体变量之间只能相互赋值(可以在函数传实参的时候传递结构体变量名),不能加减乘除。 普通结构体变量和结构体指针变量作为函数传参的问题
想一想,如果你想表达一个人的个人信息,就需要int类型,char类型等等去表达名字,年龄,生日之类的,这是个复杂对象,我们描述非常的困难,那么C语言有没有什么简单的方法呢?请往下看
变量有不同的类型,整形,浮点型等。那指针也有不同的类型,要将&num(num的地址)保存到p中,我们知道p就是一个指针变量,我们给指针变量相应的类型。
其中struct_varibale_type可以自定义,member1也可以自定义,本质上是一个字符串,可以使用中文或者其他语言,只不过使用英文是潜规则,variable_type是基本数据类型,完全等同于C语言。
我们通常会用一个变量来定义一个事物,就比如我们要进行求和,我们通常会创建一个sum的变量来存放求和的结果,最终再打印sum,此时的sum就表示我们最终的求和结果。
c语言使用结构体变量进一步加强了表示数据的能力。 定义形式:struct 结构体名{ 结构体包含的基本类型 }; 比如我们打游戏,会有人物的名称,血量,蓝量,经验等等,如果我们把这些数据都用一个人物数据的结构体来表示的话 struct Game_person{ char name[]; int hp; int mp; double experience; }; 它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member). 上述是我们已经创建了一个基本的结构体模板(结构体类型),它指明了结构体的存储方式(),如果我们想真正创建一个结构体对象。就要实例化结构体 struct Game_person user1; 可以这么理解,(char name[50]) 如此,我们就实例化了一个结构体对象;有了实例对象,就可以对结构体对象进行初始化了
前面我们讲过存储数据的方式,可以通过变量,或者复合类型中的数组,切片,Map,结构体。
在C语言中,指向结构体对象的指针变量既可以指向结构体变量,也可指向结构体数组中的元素。
注意:函数就是功能。每一个函数用来实现一个特定的功能。函数的名字应反映出它代表的功能,这样代码的可读性会大大提升
我们已经知道结构体是什么了,那如果我们想用结构体来描述一个学生该怎么做呢? 首先我们要进行结构体的声明。 如果我们想要描述一个学生,那我们就先来声明一个学生类型,怎么声明呢?
昨天发布的真题练过手之后,感觉如何?是不是还有知识盲点?下面来对照下考试大纲,查遗补漏吧?
ZYNQ的SDK是用C语言进行开发的,C语言可以说是当今理工类大学生的必备技能。我本科学C语言时就是对付考试而已,导致现在学ZYNQ是一脸懵逼。现在特开一帖,整理一下C语言的基础知识。
首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h"
这是典型的C语言中函数模块中的返回值问题,算是常见的语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正的技术人员,在嵌入式领域C语言依然充当着非常重要的角色,C语言在很多领域还是首选编程语言,主要在强调性能以及靠近硬件的编程中还是发挥着极其重要的作用,C语言常见的难点屈指可数,但组合起来使用难度会提升许多。
tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体指针了,所以就整理一下这些基础知识
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。
这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以我想通过一篇文章来尽可能的讲解指针,以对得起这个文章的标题吧。
大家好,我是泽奀,本篇博客就带大家来(初始)C语言的结构体的内容,后面也会发布一篇进阶的内容。
struct即结构体,C程序中经常需要用相关的不同类型的数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别等不同类型的数据时,像这种数据类型总是在一起出现,那么我们不如把这些变量装入同一个“文件夹”中,这时用的关键字struct声明的一种数据类型就是表示这个“文件夹”的使用。那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。
刚开始学习的时候,会有很多疑惑,例如指针怎么用,结构体跟指针怎么配合,例如函数的参数有什么要求,如何实时更新IO口的数据等。如果重新进行C语言的学习,那么要学很久才能够系统地认识。本文则将比较容易想不起来的知识点进行简单的整理。
基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。具体一点说,结构体是让一些很散的数据变得很整,不管是网络传输,还是函数传参,还是为了便于你肉眼管理。
结构体是C语言中一种重要的数据类型,它允许我们将不同类型的数据组合成一个整体,并以自定义的方式进行操作。通过结构体,我们可以更加灵活地管理和处理复杂的数据结构,从而提高程序的可读性和可维护性。本篇博客将从结构体的定义开始,逐步介绍其在C语言中的应用,包括结构体变量的定义和初始化、结构体成员的访问、结构体作为函数参数的传递等内容,帮助读者深入理解C语言中结构体的核心概念和用法。接下来我们来详细解释一下
数组元素可以通过下标访问,是因为数组的元素长度相同,但是结构体的成员变量的类型不同,因此不能使用下标访问结构体的成员变量
结构体,是将不同类型的数据存放在一起,作为一个整体进行处理,其最主要的作用就是封装(可以再次利用)(作用不是简便)
以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶段将用define定义的来内容进行了替换。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。define定义的常量,预处理时只是直接进行了替换,,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。,因此在编译时它不对宏的定义进行检查,作用域不影响对常量的访问 。它的常量值只能是字符串或数字。 该命令有两种格式:一种是简单的常量宏定义, 另一种是带参数的宏定义。
最近为了解决一个技术问题,需要用到内核里中断下半部的tasklet机制,使用过程遇到了非常有趣的问题。在解决问题过程中,也逐步加深了对tasklet机制的理解。本文把这些收获记录下来和大家一起分享。
这在实际操作中非常麻烦,我们需要一种新的数据类型,将这些信息存放在一起,而不是这样分散的去表示和操作。数组显然是无法满足这个需求的,因为数组只能存放相同的数据类型,一个学生的信息,可能需要多种数据类型来表示,比如考试成绩,这个就需要float类型来表示。
在编程中,特别是在像C和C++这样的语言中,结构体(struct)是一种用于创建复合数据类型的工具。结构体允许你将多个不同类型的数据项组合成一个单一的实体。这对于组织和管理数据非常有用,尤其是当你需要处理复杂的数据集时。
结构体部分内容,涉及结构体定义,结构体变量,结构体指针,结构体数组,更多内容敬请关注。
在学习每个类型之前我们需要了解其存在的意义,即什么是结构体?为什么要引入结构体这个类型呢? 我们可以想象现实中我们是如何处理一个人信息的?假设现在要汇总每个同学的个人信息,这时我们会对每个人的姓名,年龄等信息单独建表吗?显然不会,通常会给每个人发一张信息采集表,在表上可以填写每个人的姓名,年龄,体重等信息。 在c语言中像这种信息采集表形式的数据结构是通过结构体来实现的。其中姓名,年龄等信息就是结构体的成员变量,显然这些结构体的成员变量可以是不同的数据类型。 在引入结构体这个类型后,我们想表示类似学生信息这样的工作时,就会大大减少变量的创建,也减少了我们的工作量,提高了代码的可读性。
对于大小端存储模式只适用于单个数据(超过单个字节的数据)里的各个字节的排列顺序,其会使该数据的各个字节都安排在对应的地址上 (如在vs中最高位字节安排在最高地址处,最低位字节安排在最低地址处,vs为小端存储模式),它不影响多个数据中的排列。之前就很细致的讲过了在这篇文章中写文章-CSDN创作中心
在正式研究链表之前,我们先来学习结构体。跟指针一样,结构体也是一种数据类型,只不过这种数据类型可以存储多种属性的复杂数据,在使用前需要定义类型。
本文最后更新于2022年02月24日,已超过4天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
假如我们定义了 char a=’A’ ,当需要使用 ‘A’ 时,除了直接调用变量 a ,还可以定义 char *p=&a ,调用 a 的地址,即指向 a 的指针 p ,变量 a( char 类型)只占了一个字节,指针本身的大小由可寻址的字长来决定,指针 p 占用 4 个字节。
指针是C语言的基本概念,C语言中指针无处不在。实际上,每种数据类型,都有相应的指向T的指针类型。 指针类型变量存放的值,实际上就是内存地址。指针类型有两个最基本的操作:
半个月前写的那篇关于指针最底层原理的文章,得到了很多朋友的认可(链接: C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻),特别是对刚学习C语言的小伙伴来说,很容易就从根本上理解指针到底是什么、怎么用,这也让我坚信一句话;用心写出的文章,一定会被读者感受到!在写这篇文章的时候,我列了一个提纲,写到后面的时候,发现已经超过一万字了,但是提纲上还有最后一个主题没有写。如果继续写下去,文章体积就太大了,于是就留下了一个尾巴。
以前也读了这个RGBD相机的一些源码但是发现自己的基本功是一点也不好,所以就搁置了很久,今天试图来回答一些问题。
C语言中的数据类型可以分为两种:简单数据类型和复杂数据类型,简单数据类型就是我们经常用到的整型(int)、实型(float)、字符型(char)等,复杂数据类型中有结构体(struct)、位段(struct)、枚举(enum)和联合体(union)这几种。
上面的 print1 和 print2 函数哪个好些? 答案是:首选print2函数。 原因: 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
C语言的数据类型包括基本类型(内置类型)、构造类型(自定义类型)、指针类型和空类型(void),其中基本类型就是我们常见的整形、浮点型,而自定义类型则包括数组、结构体、枚举、联合(共用体),数组我们已经非常熟悉了,今天我们主要学习自定义类型中其他几种类型:结构体、枚举以及联合。
要记住结构体是一种类型,它的地位是和int这些类型是一样的,我们能用int做的事情,也可以用结构体做。唯一不同的是,结构体是通过我们自己去定义的,而int这些类型是我们c语言内置的类型
领取专属 10元无门槛券
手把手带您无忧上云