自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 C++:类和对象初探

当创建类的对象时,会分配内存以存储对象的数据,并调用构造函数进行初始化。对象可以调用类的成员函数来执行特定的操作,也可以访问类的成员变量。类和对象是面向对象编程的基础,通过封装、继承和多态等特性,可以更加灵活地组织和管理程序的逻辑结构,提高代码的可维护性和复用性。指针是一个隐式参数,它指向调用成员函数的对象的地址。这样可以在成员函数中访问调用该函数的对象的数据成员和其他成员函数。指针允许在成员函数中访问调用该函数的对象的数据成员,并且可以避免与参数同名的成员变量产生混淆。指针的值,即对象的地址。

2024-03-27 19:01:33 267

原创 C++:引用详解

在C++中,引用(Reference)是一个别名,它允许我们使用一个变量来访问另一个变量的内容。引用提供了一种简洁而直观的方式来操作变量,同时避免了指针的复杂性。在C++中,引用使用符号来声明,并在定义时必须初始化,初始化后引用将一直指向同一个变量。

2024-03-26 16:54:45 979

原创 C++:构造函数和析构函数(一)

一、构造函数和析构函数是C++类中非常重要的两个特殊成员函数,它们在对象的生命周期管理中扮演着关键角色。delete总的来说,构造函数负责对象的初始化,而析构函数负责在对象不再需要时释放资源。这两个函数确保了对象在创建和销毁时能够正确地管理其资源,避免了内存泄漏和其他潜在问题。

2024-03-25 19:19:12 451

原创 C++:类和对象的基本概念

的类,它包含公有、私有和受保护成员。然后我们定义了一个继承自。的对象,并展示了哪些成员可以从哪里访问。,并在其中尝试访问不同的成员。,设置了它的数据成员,并调用了它的。在上面的代码中,我们定义了一个名为。在上面的例子中,我们定义了一个。C++类的三种成员访问权限是。类,包含两个数据成员。

2024-03-25 18:59:34 229

原创 C++是对C的扩展(二)

C++的内联函数和C语言的宏定义都是用于在编译时进行代码替换的技术,但它们之间存在一些重要的区别。实现方式。

2024-03-25 18:43:31 930

原创 C++是对C的扩展(一)

在C++中,命名空间(namespace)是用来避免命名冲突并将全局作用域划分为更小的区域的一种机制。命名空间可以包含变量、函数、类等,它们被封装在一个命名空间内,从而避免与其他代码中相同名称的变量、函数或类发生冲突。

2024-03-25 16:56:44 764

原创 C++初识

在这个程序中,`std::cout` 和 `std::endl` 是 `iostream` 头文件中定义的标准输出流和换行符。类将数据(成员变量)和操作数据的方法(成员函数)封装在一起,隐藏了内部实现细节,提供了接口供外部访问。子类可以继承父类的属性和方法,并可以添加新的属性和方法或修改继承的行为。:类是面向对象编程的基本概念,用于描述具有相似特征和行为的对象的模板。:这是程序的入口点,所有的 C++ 程序都必须包含一个 `main` 函数作为程序的起点。:对象是类的实例化,是具体的数据实体。

2024-03-25 16:27:29 331

原创 C++概述

C++ 是一种通用编程语言,是 C 语言的扩展。它融合了面向对象编程(OOP)、泛型编程、过程式编程等多种编程范式,具有高性能、跨平台性、灵活性等特点,被广泛应用于各种领域。下面将详细介绍 C++ 的各个方面,以便更全面地了解这门语言。那么我以八点来介绍它吧。

2024-03-25 00:52:11 413

原创 嵌入式C:文件

注意:从stream所指的文件中读取字符,在读取的时候碰到换行符或者是碰到文件的末尾停止读取,或者是读取了size‐1个字节停止读取,在读取的内容后面会加一个\0,作为字符串的结尾。我们的标准io库函数,对文件操作的时候,不管文件的编码格式(字符编码、或二进制),而是按字节对文件进行读写,所以咱们管文件又叫流式文件,即把文件看成一个字节。//从fp所代表的文件中读取内容存放到str指向的内存中,读取的字节数为 ,每块100个字节,3块。二进制文件需要一个具体的文件解码器,比如读BMP文件,必须用读图软件。

2024-03-24 22:04:52 1048

原创 嵌入式C:结构体、共同体、枚举

在进行某些算法的时候,需要使几种不同类型的变量存到同一段内存单元中,几个变量所使用空间相互重叠 ,这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结 构。(4):long 在32位平台下,4字节对齐 ,即存放long int 型的变量, 起始内存单元的编号是4的倍数即可。4字节对齐 ,即存放float 型的变量,起始内存单元的编号是4的倍数即。1字节对齐 ,即存放char型的变量,内存单元的编号是1的倍数即可。4字节对齐 ,即存放int 型的变量,起始内存单元的编号是4的倍数即。

2024-03-24 21:20:46 1031

原创 嵌入式C:字符串处理函数

2、如果n大于src指向的字符串中的字符个数,则在dest后面填充n‐strlen(src)个’\0’注意如果n 大于src的字符个数,则只将src字符串追加到dest指向的字符串的后面。注意:s指向的字符串中有多个ASCII为c的字符,则找的是第1个字符。追加src指向的字符串的前n个字符,到dest指向的字符串的后面。功能:在字符指针s指向的字符串中,找ascii 码为c的字符。功能:在s指向的字符串中,找最后一次出现的ASCII为c的字符。将src指向的字符串前n个字节,拷贝到dest指向的内存中。

2024-03-24 16:27:31 572 1

原创 嵌入式C:动态内存申请

这些内存管理函数可以按需 要动态的分配内存空间,也可把不再使用的空间回收再次利用。int a [10](3) malloc申请的内存,内存中存放的内容是随机的,不确定的,,但是在实 际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据。申请的内存,首地址丢了,找不了,再也没法使用了,也没法释放了,这块内存就被泄。2、如果多次malloc申请的内存,第1次和第2次申请的内存不一定是连续的。总结:申请的内存,一定不要把首地址给丢了,在不用的时候一定要释放内存。,而无法预先确定。

2024-03-24 15:32:51 794 1

原创 嵌入式C:指针(二)

f是个函数指针变量,存放函数的地址,它指向的函数,定义了一个函数指针数组,有10个元素p[0] ~p[9],每个元素都是函数指针变量, 指向的函数,必须有整型的返回值,两个整型参数。注意:如果实参是一个普通变量,地址传参的话就需要形参是一级指针,如果实参是一个一级指针,地址传参的话就需要形参是一个二级指针, 以此类推。数组的名字是数组的首地址,是第0个元素的地址,是个常量,数组名字加1指向下个元素。a是数组的名字,是a[0]的地址,p=a即p也保存了a[0]的地址,即a和p都指向a[0],所。

2024-03-24 15:14:04 732 1

原创 嵌入式C:指针(一)

在这个示例中,循环打印了数组中的每个字符串,分别输出了 "Follw me"、"BASIC"、"Greatwall"、"FORTRAN" 和 "Computer"。在32位平台下,地址总线是32位的,所以地址是32位编号,所以指针变量是32位的即4个。总结:无论什么类型的指针变量,在32位系统下,都是4个字节,只能存放对应类型的变量的。因为不管地址内的空间多大,但是地址编号的长度是一样的,所以在32位操作系统中,地。变量存放在内存中,有地址编号,咱们定义的数组,是多个相同类型的变量的集合,

2024-03-24 02:16:20 526 1

原创 嵌入式C:预处理

预处理-->编译-->汇编-->链接1、预编译将.c中的头文件展开、宏展开生成的文件是.i文件2、编译将预处理之后的.i文件生成.s汇编文件3、汇编将.s汇编文件生成.o目标文件4、链接将.o文件链接成目标文件。

2024-03-24 01:04:27 476 1

原创 嵌入式C:变量的存储类别

静态变量(定义变量的时候,前面加static修饰),或全局变量 ,在分文件编程中,只需要将函数的实现过程写在指定的.c文件中,然后将其声明写在指定。在函数调用之前,局部变量不占用空间,调用函数的时候,户空间是当前进程所私有的,内核空间,是一个系统中所有的进程所公有的。注意:定义普通的全局变量的时候,如果不赋初值,它的值默认为0。注意:定义静态全局变量的时候,如果不赋初值,它的值默认为0。第一次调用函数的时候,开辟空间赋值,函数结束后,不释放,static 限定了函数的作用范围,在定义的.c中有效。

2024-03-24 00:30:41 758 1

原创 嵌入式C:函数

函数定义包括函数的实际实现,即函数的具体代码。函数头包括函数的返回类型、函数名和参数列表,函数体包括函数的具体实现代码。:在使用函数之前,需要提前声明函数。通过函数指针,可以动态地选择要调用的函数,这在某些情况下非常有用,例如在回调函数中使用。函数就是讲特定功能的代码封装在一个函数内部,当要使用这些代码时,只需要通过函数名就可以使用,这样操作起来更加方便。注:在定义函数的时候,函数的返回值类型,到底是什么类型的,取决于函数的功能。有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数,

2024-03-23 23:40:27 1076

原创 嵌入式C:数组

0开始,分别是a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3]int a[10];//定义了一个整型的数组a,a是数组的名字,数组中有10个元素,每个元素的类。//定义了一个名为a的数组,数组中每一个元素都是int类型,一共有10个元。//并且是从0开始的,分别是a[0] a[1] a[2]... a[9]这十个元素分别是a[0] a[1] …a[0]~a[9]在内存中连续的顺序存储。数据类型 数组名[行的个数][列的个数];

2024-03-23 22:46:53 882

原创 嵌入式C:goto循环

这种称为 "goto 循环" 的结构是一种无条件的跳转,它可以在程序中的任何位置引入控制流的转移。在大多数情况下,应该优先考虑使用结构化的循环语句,以提高代码的可读性和可维护性。循环时,要确保循环能够正常终止,避免出现死循环。在循环体内部,必须有适当的条件来控制循环的终止,否则程序可能会无限循环下去。循环在某些特定情况下可能会有用,但在大多数情况下,应该优先考虑使用更结构化的循环语句,以提高代码的可读性和可维护性。允许在程序中无条件跳转,它可能会打破代码的结构和逻辑流程,使代码难以阅读和调试。

2024-03-22 18:45:50 335 1

原创 嵌入式C:while循环

循环控制:在循环体内部,确保有适当的控制语句来控制循环的流程。循环条件:在编写 while 循环时,确保循环条件能够正确地终止循环。循环变量更新:在循环体内部,确保更新循环变量的值,以便在每次循环迭代后更新循环条件。循环嵌套:当在代码中使用多个嵌套的 while 循环时,要确保循环嵌套的逻辑正确,并避免出现混乱或死循环的情况。请注意,在使用死循环时,一定要确保有条件可以使循环结束,否则程序将永远执行下去,可能导致程序无法正常终止。循环性能:在编写循环时,要考虑循环的性能。的值大于5,循环终止。

2024-03-22 18:33:13 478 1

原创 嵌入式C:for循环

循环的循环条件部分,你需要提供一个布尔表达式,用于判断循环是否继续执行。当循环条件为假时,循环终止。循环的循环迭代部分,你可以更新循环变量的值。这个更新通常用于控制循环的进程,例如递增或递减循环变量的值。循环中忘记了设置循环条件或循环条件始终为真,那么循环将变成无限循环,导致程序陷入死循环状态。如果你需要在循环外部使用循环变量的值,你应该在循环外部声明并初始化循环变量。循环提供了一种简洁的方式来重复执行代码,并且循环的控制条件可以根据需要进行灵活的设置。的值达到11时,循环条件为假,循环终止。

2024-03-22 18:21:59 508 1

原创 嵌入式C:switch选择语句

switch语句是C语言中另一种常用的选择语句,它根据表达式的值选择执行不同的代码块。switch语句的原理是将表达式的值与每个case标签进行比较,如果匹配成功,则执行相应的代码块。break语句是在控制流中使用的关键字,用于终止当前的循环或switch语句,并跳出循环或switch语句的代码块。当break语句执行时,程序将会跳出当前的循环或switch语句,并继续执行下一个语句或代码块。

2024-03-22 18:07:56 307 1

原创 嵌入式C:if选择语句

是否为偶数,如果是,则输出"Number is even.",否则输出"Number is odd."小于0,所以条件为假,如果某个条件为真,对应的代码块将被执行,而其他的。是否大于0,如果是,则输出"Number is positive."。是否小于0,如果是,则输出"Number is negative."。还有一点就是,如果if里面的代码只有一行,那么是可以省略大括号的,但是不推荐。语句是C语言中最常用的选择语句之一,它根据条件的真假来选择执行不同的代码块。的值为10,大于0,所以条件为真,

2024-03-22 17:55:25 326 1

原创 嵌入式C:运算符的概念及分类

如果a大于b,条件为真,那么max的值将被赋为a的值;否则,条件为假,max的值将被赋为b的值。在这种情况下,由于a的值为5,大于b的值3,所以max的值为5。) 对两个操作数的对应位进行或操作,如果两个对应位中至少有一个为 1,则结果为 1,否则为 0。) 对两个操作数的对应位进行异或操作,如果两个对应位不相同,则结果为 1,否则为 0。) 对两个操作数的对应位进行与操作,如果两个对应位都为 1,则结果为 1,否则为 0。如果第一个操作数为真,则整个表达式的结果为真,不再计算第二个操作数。

2024-03-22 17:23:52 1005 1

原创 嵌入式C:类型转换

在C语言中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。类型转换可以用于显式地改变数据的类型,以便满足特定的需求。C语言提供了几种类型转换的方式:在表达式中,如果参与运算的操作数具有不同的数据类型,C语言会自动进行隐式类型转换以保证操作的顺利进行。例如,将一个整数和一个浮点数相加时,整数会被隐式转换为浮点数。隐式类型转换通常遵循一定的规则,如整数提升、浮点数提升和截断等规则。强制类型转换是通过使用类型转换运算符来显式地将一个数据类型转换为另一个数据类型。

2024-03-22 16:46:49 217 1

原创 嵌入式C:变量和常量

这样定义的PI是一个常量,其值为 3.1415。宏定义使用#define关键字,后面跟着宏名和宏值。在代码中使用宏名时,会被替换为对应的宏值。需要注意的是,在进行宏定义时,不需要使用分号作为结束标记。宏定义只是简单的文本替换,不需要像函数或语句一样使用分号。#define 宏名 宏值。

2024-03-22 16:21:45 335 1

原创 嵌入式C:数据类型相关的关键字

请注意,空类型的大小是不确定的,因为它没有具体的数据类型。在C语言中,空类型主要用于指针的通用性和函数的灵活性,而不是用于存储具体的数据。void:表示空类型,用于表示没有返回值或不需要传递参数的函数,或者用作指针的通用类型。void类型的指针可以指向任何类型的数据,但不能直接访问或修改其指向的值。关键字是C语言中预先定义好的标识符,具有特殊的含义和功能。这些关键字在C语言的语法中有着固定的作用和用法,不能被用作变量名、函数名或其他标识符。联合体的大小取决于最大成员的大小,只能同时存储一个成员的值。

2024-03-22 16:06:12 854

原创 嵌入式C:第一个C程序

std是标准库,io是输入输出流,.h是文件的后缀。stdio.h是一个文件它一般存在标准系统目录(你安装编译器的目录,像QT之类的编辑器会自动帮你安装编译器)。include会把.h文件里的内容在.c文件里面可以使用,“”和的区别在于会找标准系统目录,而“”会优先找文件目录,换句话说自己写的.h用“”最快,标准库里的用最快。

2024-03-22 14:34:35 319

原创 嵌入式第一门课:C语言的历史

c语言是在贝尔实验室由。

2024-03-21 19:19:55 500 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除