自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 76.指针与引用的区别

引用不是对象,他只是为已经存在的一个对象起的起的另外一个名字,对其所有的操作都是在与之绑定的对象上进行的,所以他只能绑定一个对象,不能更改绑定对象。引用不是对象,是为对象起的另外一个名字,程序会把引用和对象的初始值绑定,而不是拷贝给引用,无法将引用绑定到另外一个对象上,因此引用必须初始化。2.指针无需在定义时赋值,和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,将拥有一个不确定的值。1.指针本身就是一个对象,允许对指针进行赋值和拷贝,而且在指针的声明周期内,它可以指向几个不同的对象。

2023-03-11 23:22:28 256 1

原创 85.链表总结

链表总结与进阶抽象数据类型(ADT abstract data type)与抽象数据接口(ADI abstract data Interface)链表实际上就是对于结构体、结构体指针和结构体内可以包含指向同类型的结构体指针不可以包含指向同类型的结构体的应用!链表首先有一个指向同类型结构体指针的头指针,头指针之后是结构体节点,每个结构体节点内包含了指向同类型结构体的指针,用于指向下一个结构体节点。

2023-03-05 21:59:16 541

原创 84.链表C代码实现

manage_gets这个函数的目的就是为了获取名字的字符串,但是由于fgets系统函数获取到的字符的末尾添加的是“\n”不是“\0”,所以要将“\n”替换成“\0”,而且要照顾软件的边界条件。如果使用current和prev和head觉的比较乱,可以使用a,b,c,d来操作。没有检查malloc是否能够成功分配到内存;无法删除链表中的项;

2023-02-28 23:28:37 239

原创 83.链表

但是,如果这样做的话,还需要另外一个指针跟来跟踪新分配的指针,因为使用malloc的返回值是一个指针,需要“另外一个指针”来跟踪新指针。那这“另外一个指针”也需要一个指针来跟踪,,以此类推,需要重新设计结构体才能解决该问题。结构不能含有与结构本身类型相同的结构,但是可以含有指向同类型结构的指针,这是链表的基础。就是在每个结构体中要包含指向下一个结构体next的指针,当创建新结构时,把该结构的地址存储在上一个结构体中。每次使用malloc为新的结构体分配内存空间时,也为指向该结构体的指针(新指针)分配内存。

2023-02-27 23:14:36 195

原创 82.链表-发展2

①改进程序的缺点:仍然需要在程序运行时,由用户指定输入的数量,并且有可能出现内存不足的情况或内存浪费的情况。③还有一种情况是整个组织的人员是不确定数量的,每天都在变化,用户可以不确定的添加数据。在发展2中,每输入一个人员信息就使用一次malloc分配内存(for循环实现)发展2可以部分解决①内存浪费的问题,但是不能解决③的问题。②用户需要正确的提供人员的数量,这个值可能会输入错误。链表是怎么发展来的2。

2023-02-27 22:43:22 62

原创 81.链表——发展1

在上一篇博客中,其中的程序缺点明显,存在浪费空间的问题,人名限制不太严格不满足需求,人员总数量对有些公司来说太小。总结:数据表示不够灵活,程序在编译时就已经确定了所需的内存空间大小,对此如果能在程序运行时确定会更好。

2023-02-21 20:44:35 84

原创 80.链表-由来

找到正确的数据表示方法不仅是选择一种数据类型,而是要考虑进行哪些数据操作,要确定如何存储数据,如何访问数据,如何为数据类型定义有效的操作(增删查改)。程序开发最重要的部分是如何在项目程序中找到一种合适的、好的数据表示方法,这样可以让程序设计起来更容易,数据处理算法更为简单。编写一个程序,输入某组织人员的名字和年龄(有多种信息),先从简单的开始。C语言的内置数据类型有:简单变量、数组、指针、结构体、联合、枚举等。由于通讯录的每个人的个人信息有多种,所以使用结构体来表示比较合适。

2023-02-19 22:39:44 441

原创 1.关于嵌入式开发软件工程师的理解

学习嵌入式软件开发,首先要学会使用工具,> 1. 包括各种语言,C语言、FPGA、C++等> 2. 各种工具软件,各种芯片开发的IDE环境> 3. 各种操作系统,Vxworks、Linux、Freertos等> 4. 计算机基础,基本的框架结构,网络通信等> 5. 编译器、交叉编译工具链

2023-02-19 22:33:49 1492

原创 5.什么是EDA技术

EDA(ELEctrinic design automation)是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理和智能化技术等,进行电子产品自动化设计的一门新技术。使用EDA软件工具平台,可以对 以硬件描述语言 为逻辑描述手段 完成的 设计文件,自动的完成逻辑编译、逻辑简化、逻辑分割、逻辑综合、布局布线,以及逻辑优化和仿真测试,实现需要的电路功能。

2023-02-15 22:57:41 1927

原创 VHDL之前言-关于VHDL背景知识的介绍(复杂数字系统、高速硬件逻辑电路、简单逻辑阵列PLD、复杂可编程逻辑器件CPLD、现场可编程门阵列FPGA、CPLD和FPGA的对比、电子设计自动化EDA与)

VHDL之前言-关于VHDL背景知识的介绍(复杂数字系统、高速硬件逻辑电路、简单逻辑阵列PLD、复杂可编程逻辑器件CPLD、现场可编程门阵列FPGA、CPLD和FPGA的对比、电子设计自动化EDA与硬件描述语言HDL)

2023-02-15 22:50:24 358

原创 3.VHDL知识体系结构梳理

VHDL知识体系结构梳理

2023-02-15 22:34:31 101

原创 21.操作符优先级和结合性列表,复杂表达式求值顺序

操作符优先级和结合性列表,复杂表达式求值顺序

2023-02-13 23:06:33 578

原创 95.C语言-处理字符的库函数

1. strcat 字符串连接(拼接)库函数2. strcpy 字符串复制库函数3. strcmp 字符串比较函数4. strlen5. strwr6. strupr

2023-02-13 21:49:12 460

原创 多任务系统(操作系统)

多任务系统(操作系统)

2022-11-17 15:09:53 2880

原创 单片机开发-软件架构与系统设计(工程实现使用的也是轮询系统、前后台系统和多任务系统)

单片机开发-软件架构与系统设计(工程实现使用的也是轮询系统、前后台系统和多任务系统)

2022-11-10 23:22:20 2224

原创 win10系统访问我的电脑&win10打开命令行

win10系统访问我的电脑&win10打开命令行

2022-11-07 15:59:56 2042

原创 xilinx zynq7系列加载器无法连接的原因&测试xilinx Zynq7开发板的加载器和芯片是否正常的快速方法

xilinx zynq7系列加载器无法连接的原因&测试xilinx Zynq7开发板的加载器和芯片是否正常的快速方法

2022-11-07 14:41:27 2101

原创 逻辑运算符

逻辑运算符当a和b的值发生变化时,两条语句的结果可能会不相同。这个是不确定的,所以一旦由于这种操作引起问题,会非常难以发现。逻辑与&&操作符两侧的条件都为真,整个表达式的值才为真,如果表达式两侧的任何一个条件为假,那么整个表达式的值为假。逻辑或||操作符两侧的条件只要有一个为真,整个表达式的值为真,如果表达式两侧的条件都为假,那么整个表达式的值为假。&&操作符会首先对左侧的子表达式求值,如果它的值为真,然后对右边的子表达式求值。逻辑操作度和位操作符使用时容易混淆,但是它们对运算对象进行的是完全不同的操作。

2022-10-06 17:00:44 569

原创 关系运算符-关系运算符的优先级

关系运算符-关系运算符的优先级再将其结果赋值给result,与第二句的效果一样,结果相同。关系运算符的优先级比算术运算符的优先级低,比赋值运算符的优先级高。两者的效果一样,结果相同。但是,在实际编程中,不建议这样写。总结:每个关系运算符都把它左侧的值和右侧的值进行比较。while循环中的内容会执行100次。关系运算符的结合律都是从左往右的。while循环中的内容会执行99次。高优先级: =两者的效果一样,结果相同。低优先级: ==、!用于测试大于等于关系。用于测试小于等于关系。

2022-10-06 16:56:31 9805

原创 单目运算符

单目运算符分析一下,n的值只有在被使用之后才会递增为4,根据优先级的规定,++只作用于n,不作用于data + n。如果,n++是表达式的一部分,可将其视为“先使用n,再递增”;而++n则表示,“先递增n,再使用”。此外,还可以根据优先级判断何时使用n的值对表达式求值, 而递增运算符的性质决定了何时递增n的值。出,n,然后输出n的平方。然后递增n,求下一个。对整形操作数执行求补操作,操作数中原来所有为1的位变为0,为0的位变为1。如果一个参数出现在函数的多个实参中,不要对其使用递增和递减运算符。

2022-10-06 16:48:57 10895

原创 基本运算符-算术运算符,优先级

基本运算符-算术运算符,优先级在整数除法中,会出现无法整除的情况,如果实际结果有小数部分,整数除法会丢弃小数部分,这个过程被称为截断。如果,根据加法运算的结合律,从左往右,那应该先计算6*1,但是这又与优先级相矛盾。根据运算符的优先级,先执行乘法运算,再执行加法运算。所以,这个是由编译器决定的,不同的编译器可能两个乘法计算的顺序是不同的。如果,根据 * 的结合律,从左往右,那应该先计算 6 * 1, 但是两个 * 法并不共享同一操作数。乘法运算符用于乘法运算

2022-10-06 16:27:45 1190

原创 结构体声明的三种形式和使用typedef声明定义结构体类型

结构体声明的三种形式和使用typedef声明定义结构体类型int page;};-创建结构体变量int page;} Shot;} Shot;int page;} BOOK_T;int page;};

2022-10-06 16:12:57 515

原创 结构体自引用

结构体自引用使用typedef创建SELF_CONTAIN并且其结构成员可以自引用,但是上述示例在定义mu时,SELF_CONTAIN并没有创建,所以在结构体内部定义mu时,结构体类型并没有创建,所有不合法。结构体内部包含一个指向该结构体本身的指针,事实上,该指针所指向的是同一种类型的不同的结构体,链表和树就是使用这种技巧实现的。这个错误示例与结构体初始化的方式有关,如果声明时省略结构体名(结构标签),使用结构体指针自引用也是不合法的!结构体内部的成员是否可以是该结构体本身。即结构体是否可以包含结构体本身

2022-10-06 16:05:17 2064 3

原创 结构体作为函数的参数

结构体作为函数的参数使用结构体变量作为函数的参数时,也是传值的,会将结构体变量的全部内存单元的内容拷贝一份传递给被调函数。在传值的过程中,程序的空间和时间开销比较大,且传递的是一份拷贝,并不能改变实参本身的值。在被调函数modify中,要使用指向运算符->访问结构体成员或者使用括号,因为他的参数是一个结构体指针。只要结构体成员是一个具有单个值的数据类型,便可把它作为参数传递给接受该特定类型的函数。结构体变量名与数组变量名不同,结构体变量名不是它的地址。如果在被调函数中要修改结构体成员的值,

2022-10-06 15:57:06 6514

原创 结构体数组与结构体指针

结构体数组与结构体指针结构体变量可以使用“.”运算符,当对结构体指针使用.运算符时,一定要使用括号,因为 . 运算符的优先级是最高的,如果不使用括号,就会先执行点运算后执行 “*” 运算。注意:结构体变量名与数组名的含义是不同的,结构体变量名并不是该变量的地址,因此需要在结构体变量名前加上取址运算 “&”。lib_point是结构体的地址,也是第一个成员title的地址,虽然两个地址是相同的,但是它们的类型是不同的。疑问:既然lib是一个数组(结构体数组),那lib就是数组名,也就是数组的首地址,

2022-10-06 15:39:05 7016 2

原创 结构体引用和初始化

结构体引用和初始化int page;};int page;} IVA;只有在初始化时才可以对结构体变量整体赋值,除此之外,只能分别给每个成员变量赋值!并且不可以在结构体内部给结构体变量的每个成员赋值。错误举例:不能先定义IVA后,再整体初始化IVA = {//错误做法错误举例:不可以在结构体内部给结构体变量的每个成员赋值} IVA;

2022-10-05 23:21:02 2833

原创 结构体是什么、声明和定义

结构体基础-结构体的概念、声明和定义结构体是C语言中的一种自己定义构造的类型,它由若干个结构体“成员”组成。其中的每个成员可以是基本数据类型,可以是其他的构造类型。(引出文章-结构体成员可以包含本结构体自身吗-即结构体可以自引用吗?)声明结构体使用关键字structstruct 结构体名 {成员列表;};这样“struct+结构体名” 就构成了一个新的类型名。struct 结构体名 {成员列表;};结构体类型名 变量名列表;int page;};struct 结构体名 {成员列表;} 变量名列表;

2022-10-02 08:38:41 4323

原创 VHDL 实体

VHDL 实体实体关键字 实体名 IS通用属性关键字(参数名 : 参数类型 : = 参数值;);端口关键字(端口名 : 端口信号模式 : 数据类型;……) END 实体名;GENERIC();GENERIC(-- 代码声明的最后一行不能加分号,不然编译会报错 port(tp_0 : in std_logic;注意:1. 关键字可以用大写也可以用小写2. 代码声明的最后一行不能加分号,不然编译会报错。...

2022-08-08 23:25:25 1589

原创 什么是编译器?什么是解释器?

什么是编译器?什么是解释器在计算机上运行的所有软件都是用某种程序设计语言编写的,在一个程序运行前,该程序首先需要被翻译成一种能够被计算机执行的形式,完成这项翻译工作的软件系统被称为编译器。一个编译器就是一个程序,不同的编译器可以读懂它所对应语言编写的程序,并把该程序翻译成一个等价的,由另一种语言组成的程序,该程序一般是可以放在目标机器上的可执行的目标代码。编译器的一个重要任务就是 报告它在翻译过程中发现的源程序中的错误。在把用户的输入映射成为输出的过程中, 使用编译器产生的目标程序所用的时间会比解释器。.

2022-08-08 23:07:48 4853

原创 类型限定符

类型限定符

2022-08-07 16:41:35 412

原创 作用域,链接,存储期关系综合分析,存储类别总结

作用域,链接,存储期关系综合分析,存储类别总结存储类别主要包括自动,寄存器,静态无链接,静态内部链接,静态外部链接。①自动—在块中不带存储类别说明符或者带auto存储类别说明符的变量(或作为函数头中的形参)属于自动存储类别,具有 自动存储期,块作用域,无链接。如果未初始化自动变量,它的值是未定义的,即垃圾值。②寄存器—在块中带register存储类别说明符声明的变量(或作为函数头中的形参)属于寄存器存储类别址。把一个变量声明为寄存器变量即请求编译器将其存储到访问速度最快的区域。...

2022-08-07 16:34:21 201

原创 联合(共用体)

联合(共用体)union 联合名{成员列表;} 变量列表;举例:①int data;};hold类型的联合变量。内含 10 个联合变量的数组 union hold * p_fit;指向hold类型联合变量的指针②int data;① 和 ② 是等价的,一个是先定义联合模板,然后定义联合变量;一个是在定义联合模板的时候同时定义联合变量。③与结构体对比int data;};结构体③可以存储一个int型数据、一个double型数据 和 一个char型数据。...

2022-08-07 15:43:18 627 2

原创 多维数组、数组在内存中的存储顺序、指向数组的指针的解释与声明

多维数组、数组在内存中的存储顺序、指向数组的指针的解释与声明四种数据类型的结构如上图,他们在内存中存储的顺序也是按照上图排序存储的。如上图,数组中的元素是顺序存储的,多维数组的存储顺序是按照最右边的下表先变化的原则,称为行主续。举例:存储顺序为:其中0和1为下表序号。二维数组:三维数组:4.指针和多维数组的关系对于二维数组:从数组的角度:总结:对于以上二维数组,该数组的首元素是一个内含两个int值的数组。...

2022-08-06 23:29:37 2641 1

原创 翻译单元,编译预处理时出现

翻译单元,编译预处理时源文件和它所引用的头文件是以多个独立的文件存在的。在编译时,C的预处理器会将语言文件中的#include指令替换成头文件的内容,并将多个头文件的内容链接到一起,再与源文件连接到一起。> 编译器会将源代码(.c文件)和该源代码中引用的所有头文件当成仅有一个包含以上所有信息的文件,这个文件成为翻译单元。一个翻译单元对应一个源代码文件和他所包含的头文件!我们认为的多文件在C语言的编译器中可能是以一个文件出现的,描述一个具有文件作用域的变量时,它的实际可见范围是整个翻译单元。...

2022-08-02 19:59:45 246 1

原创 类型转换、强制类型转换

类型转换、强制类型转换

2022-08-02 19:53:30 1030

原创 编译报错,找不到变量原因--变量需先声明,后使用

编译报错,找不到变量原因--变量需先声明,后使用不同的C编译器标准不同,有的支持使用时声明变量(即在块代码的中间位置),但是很多编译器要求将声明置于块的顶部!

2022-07-26 22:29:13 1488

原创 VHDL代码结构,库、实体 、构造体介绍

VHDL代码结构,库、实体 、构造体介绍ieee库包含了许多包集(代码包的集合)定义了STD_LOGIC(8值)和STD_ULOGIC(9值)多值逻辑系统。定义了SIGNED(有符号)和UNSIGNED(无符号)数据类型和相关的算数运算和比较运算的操作。包含许多数据类型转换的函数,可以实现数据类型的转换。内部包含了一些函数,这些函数可以使STD_LOGIC_VECTOR类型的数据像SIGNED类型的数据一样进行运算操作。--文件名tp_test_single.VHD--功能描述示波器测试脚查看--作者。.

2022-07-25 23:43:26 3755

原创 函数的参数与传参

函数的参数与传参数组名或指针作为参数进行传递,它们本身的值实际上都是指针,被调函数的形参获得的是这个指针的一份拷贝。但是如果传递的参数是一个数组名,在被调函数中使用数组下标对数据元素进行修改,这样主调函数中的参数也会被修改。但是,只能把非const的数据的地址赋值给普通指针,将const的数据的地址赋值给普通指针,结果是未定义的,未知的。指向常量的指针通常用于函数的形参中,表明该函数不会使用指针改变传递来的要处理的数据。...

2022-07-24 23:15:08 366

原创 数组名作为函数参数,传值调用(拷贝),实参与形参

数组名作为函数参数,传值调用(拷贝),实参与形参1.因为数组名是该数组首元素的地址,,作为主调函数要春递给被调函数的实参-数组名,要求形参是一个能够与其匹配的指针。函数如果对数组名进行了下标引用(即在函数中使用了该形参访问或修改数组),实际是对该指针执行了间接访问操作,通过这种间接访问,被调函数可以访问和修改主调函数中的数组元素。这个参数(指针)实际上是通过传值方式传递的,函数得到的是该指针的一份拷贝,它可以被修改,但调用程序所传递的实参并不受影响。...

2022-07-24 22:18:10 4639

原创 const关键字,详解常量指针与指针常量

常量指针,指针指向的值不能变。(不能使用指针改变所指向的地址内的值)。指针常,指针自身的值不能变(指针里面存放的内存地址不能修改,但是可以改变他指向的变量的值)

2022-07-17 18:47:50 1241

小波变换详解

详细的介绍了小波变换算法的概念,和运用,帮助入门。

2018-05-16

空空如也

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

TA关注的人

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