- 博客(23)
- 收藏
- 关注
原创 C语言字符串/数组去重
第一种实现: 不新开数组, 也就是原地去重.#include <stdio.h>#include <string.h>void removeDuplicate(char str[]);int main (void) { char name[] = "hello"; removeDuplicate(name); printf("%s\n...
2018-08-27 15:50:55
9315
2
原创 快速简单地求负数的补码和求补码代表的负数
快速简单地求负数的补码和求补码代表的负数特点是:快速简单实用,不用教科书的取反加一之类的麻烦方法。//1 这是我认为必要的基本知识补码,是整数数字数据在计算机内部的存储格式。整数分为正数,0,和负数。1位二进制数字可以表示2个不同的状态,2位二进制数字可以表示4个不同的状态,3位二进制数字可以表示8个不同的状态,(此处省略
2018-01-22 20:24:23
6296
1
原创 HTTP协议用的TCP但是只建立单向连接
网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上)。 也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输, 而HTTP是应用层
2018-01-12 17:59:16
4197
转载 C语言再学习 -- 再论数组和指针
之前有总结指针数组,但是现在看来总结的太简单了。好多重要的知识点都是一带而过的。本想在后面添加后来想想算了,还是再写一篇文章来详细介绍数组和指针这对冤家吧。之前总结的,参看:C语言再学习 – 数组和指针一开始觉得C语言再学习专栏都写了五十篇了,现在的C语言水平至少可以说熟练掌握吧。有点洋洋得意的感觉,但是总结这章的时候,我有点急躁了。忽然觉得自己还是什么都不明白,之前的对C语言的认知只是冰山一角。迫
2017-10-09 17:55:01
1800
原创 C语言之指针专题四:指针做函数参数
编号指针函数参数内存分配方式(级别+堆栈)主调函数实参被调函数形参备注 011级指针(做输入)堆分配使用一般应用禁用栈分配使用常用Int showbuf(char *p); int showArray(int *array, int iNum)021级指针(做输出)栈使用结果传出常用int geLen(char *pFileName, int *pfileLen);032级指针(做输入
2017-10-08 23:53:36
562
原创 C语言之指针专题三:理解指针要和内存四区模型和函数调用模型相结合
1)、理解指针要把内存四区模型和函数调用模型相结合 前面已经讲述内存四区模型和函数调用模型、指针是为内存服务的,因此要深刻理解指针就要 把指针和内存四区以及函数调用模型相结合理解。2)、主调函数,被调函数 1、 主调函数可把堆区、栈区、全局数据内存地址传给被调用函数 2、被调用函数只能返回堆区、全局数据 3)、主调、被调函数内存分配方式—-指针做函数参数输入输出特性
2017-10-08 23:32:48
330
原创 C语言之指针专题二:指针做函数参数是指针存在的最大意义
指针专题二:指针做函数参数(间接赋值)是指针存在最大意义1、*p间接赋值成立条件:3个条件1)2个变量(通常一个实参,一个形参)2)建立关系,实参取地址赋给形参指针3)*p形参去间接修改实参的值2、间接赋值的应用场景:三个条件组合1):123都写在一个函数里面2):12写在一个函数里面 3写在另外一个函数里面3):1写在一个函数里面 23写在另外一个函数里面(C++中引用)3、引申:函数调用时,用n
2017-10-08 23:27:13
300
原创 C语言之指针专题一:指针变量和指针所指向的内存空间是两个不同的概念
指针变量和指针所指向的内存空间是两个不同的概念char*p = "123456";//p是一个指针变量存放在临时栈区,"123456"是一个字符串常量存放在常量区,变量p保存的是字符串的地址char*str = (char*)malloc(100);//将分配的100字节的堆区的内存空间的地址赋值给指针变量pstrcpy(str,"123456");//将字符串拷贝到堆区1)指针也是一种变量
2017-10-08 23:14:59
1483
原创 C语言之内存四区模型和函数调用模型
内存四区模型 图1、内存四区模型流程说明1、操作系统把物理硬盘代码load到内存2、操作系统把c代码分成四个区3、操作系统找到main函数入口执行1、内存四区:一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆
2017-10-08 22:53:23
283
转载 C语言中指针的几种用法
大家都知道指针是C语言中的精髓,它能直接对物理地址进行访问,具有双重功能,是嵌入式设计中必不可少的一门语言。C语言功能强大的主要原因就是具有指针结构。指针是一种特殊的数据类型,直接指向目标的存储地址,实现直接访问对象存储空间的功能。 很多初学者会发出这样的感慨:我C语言中其它的知识都学得可以,唯独指针搞不懂。如果是这样,我可以很负责的告诉你,对于这门编程语言,你等于是没学。所以学好指
2017-10-08 22:18:18
628
转载 STM32 基于串口RS485双机通信原理浅析
RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有我用的是STM32库函数学的485通信,所以接下来就讲讲STM32串口实现485双机通信的原理: 485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A->B的同时B->A,瞬时同步)工作模
2017-09-29 16:23:15
2055
转载 模糊控制算法的C++实现
之前写过一篇关于使用样本数据获取模糊规则的博文,原文 的地址是:http://blog.youkuaiyun.com/shuoyueqishilove/article/details/71908410,大家可以参考,本篇文章适合对模糊控制算法有一定了解的人阅读,给大家提供一种如何用C++实现模糊控制的方法,仅供参考。 实现模糊控制器需要以下步骤:确定模糊控制器的输入和输出量设计模糊控制器的控制规则确立模
2017-09-15 17:24:35
10038
2
原创 模糊控制仿真与实现入门
模糊控制仿真与实现入门 在日常生活中我们常常能听到人们说诸如天气太热了或者天气太冷了这样的话.太冷,太热这样的词是人们对温度数值高低的一种看法,如果我们细问,太冷是多少摄氏度?太热又是多少摄氏度?我们不太可能得到一个确切的温度值,这个数值会随不同的人的看法而改变,年轻人可能15摄氏度才觉得冷,而老年人可能18摄氏度就觉
2017-09-13 15:25:20
9719
7
转载 C语言实现常见的矩阵运算函数
1.矩阵转置函数void matrix_t(double **a_matrix, const double **b_matrix, int krow, int kline)////////////////////////////////////////////////////////////////////////////// a_matrix:转置后的矩阵// b_matrix:转置前
2017-09-12 08:59:54
13146
5
转载 模糊控制算法实例解析(含代码)
首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。按照日常操作经验,有以下规则:1、 若当前水位高于目标水位,则向外排水,差值越大,排水越快;2、 若当前水位低于目标水位,则向内注水,差值越大,注水越快;3、 若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。 下面来设计一个模糊控制器1、选择观测量和控制量一般选择偏差e,即目标水位和当前水位的
2017-09-12 08:46:18
40948
16
原创 STM32使用串口1配合DMA接收不定长数据,大大减轻CPU载荷。
最近经常看见坛友在论坛上问串口接收的问题,我之前刚好由于项目需要用到PLC的PPI协议,需要不停地利用串口接收数据,一开始的时候采用单字节中断的方式接收判断。但是用来做通信的时候需要不停的产生串口接收中断,会严重影响主程序的运行。后来采用DMA接收的方式,但是一般情况下配置的DMA都是接定长的串口数据,对于未知长度的串口数据接收并不适用。后来在网上发现了一种方法可以利用串口的空闲中断+DMA接收的
2017-09-06 10:36:58
2258
转载 很有用的STM32外部中断
STM32的EXTI控制器支持19 个外部中断/事件请求。每个中断设有状态位,每个中断/ 事件都有独立的触发和屏蔽设置。STM32的19个外部中断对应着19路中断线,分别是EXTI_Line0-EXTI_Line18:线0~15:对应外部 IO口的输入中断。线16:连接到 PVD 输出。线17:连接到 RTC 闹钟事件。线18:连接到 USB 唤醒事件。
2017-09-04 22:10:31
1998
转载 单片机串口通信电平不匹配的解决电路
今天无意中,在网上看到这个电平匹配的电路,个人觉得有问题,说出来大家讨论下,另外我也做出来自己的解决电路,大家也看看有什么问题。虽然也见了有人说直接连接或者中间加一个22Ω的电阻,隔一下就可以了,也不没见出什么事的。因为电平不同的原因,多少还是会缩短IC的使用寿命的。如下图,这是在网上看到的电路图。很显然,右边的是使用3.3V供电的IC,左边的是使用5.0V供电的IC。分析下这个电
2017-07-28 15:43:15
19189
4
转载 stm32单片机ISP烧写
使用STM32常用到的问题一般学生比较少遇到,但开始工作,进行软件开发时,会遇到各种“匪夷所思”的问题不过,慢慢积累就能对硬件、软件有一定了解,能让你很快的精通!在使用stm32f103系列的mcu时,当时还在学校的时候用的jtag(盗版)烧写,对烧写引脚没有那么关注(反正能烧写就行)但是到了企业工作后,发现一般只使用4个引脚烧写——就是所谓的SWD模式只需要4根引脚(VCC、GND、SW
2017-07-20 11:16:33
4000
转载 AD 技巧
AD 技巧 PCB设计基础方格与格点的切换:View-Grids-Toggle Visible Grid Kind源点:Edit-Origin-Set边界的定义:Keep Out Layer-Utility Tools-Place Line 按TAB可定义线宽选取元件:PCB-PCB Filter-IS Component逐个放置元件:TOOLS-Component Placemen
2017-07-13 23:59:48
2087
转载 STM32串口如何代码实现更稳定的接收消息
在 《STM32串口向世界问好》介绍过如何发送消息,那么又如何接收消息呢?也很简单,只需要配置好串口接收,配置好中断,并在串口中断函数里面进行数据接收就可以了。通用配置代码如下:/** * @brief 初始化IO 串口1 * @param bound:波特率 * @retval None */void USART1_Debug_Init(u32 bound){
2017-07-09 20:11:29
1555
转载 c++学习笔记 内存四区 函数调用模型 指针强化
栈:由编译器自动分配释放,存放函数的参数值,局部变量的值等。 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收。数据区: 全局区:全局变量和静态变量的存储是放在一块的,吃实话的全局变量和静态便令在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 常量区:字符串常量和其他常量的存储位置,程序结束后由操作系统释放。代码区:
2017-07-09 19:55:27
285
转载 DB9 公头母头引脚定义及连接
1.实物及引脚简介在做开发的时候经常会用到串行接口,一般9针的串行接口居多。如下图所示:公头母头用于连接线的采用上图封装。但用于开发板的时候采用90度弯角插针的封装。如下图:各引脚的定义为:2.公头母头与MAX232的连接当公头母头与MAX232进行连接的时候,我们会发现按照上图所说的9个引脚的定义,好像除了外观,公头和母头并没有什么区别,因为每个管脚的定义都是一样的。这样想是不对的!仔细看
2017-07-09 10:50:29
3991
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人