C语言
海歌也疯狂
用努力获得。
QQ:1317248465,欢迎交流
展开
-
卡尔曼滤波算法--C语言实现
卡尔曼滤波的C语言实现原创 2022-06-28 10:57:16 · 5962 阅读 · 0 评论 -
C语言--内存分区
一、C语言五大内存分区1. 栈区(stack):存放函数形参和局部变量(auto类型),由编译器自动分配和释放 2. 堆区(heap):该区由程序员申请后使用,需要手动释放否则会造成内存泄漏。如果程序员没有手动释放, 那么程序结束时可能由OS回收。 3. 全局/静态存储区:存放全局变量和静态变量(包括静态全局变量与静态局部变量), 初始化的全局变量和静态局部变量放在一块,未初始化的放在另一块 4. 文字常量区:常量在统一运行被创建,常量区的内存转载 2022-01-19 08:46:46 · 7277 阅读 · 0 评论 -
Qt--判断QString能否能正常转换为数字
bool SerialFormatData::isStringToNumber(QString qstr){ uint8_t ucDotCount = 0; QByteArray byteArray = qstr.toLatin1(); for(int i=0; i<byteArray.length(); i++) { if(byteArray[i] != '.') { if (byteArray[i]<.原创 2021-12-28 16:56:24 · 713 阅读 · 0 评论 -
C语言--float和unsigned int之间的相互转换
选用VS2017IDE#define _CRT_SECURE_NO_WARNINGS#include "stdio.h"#include "stdlib.h"int main(){ unsigned int ucConvertType = 0; float *pdToConvert = NULL; float dValue = 0.00f; float dValueInput = 0.00f; unsigned int *puiConvertValue = NULL; un.原创 2021-12-28 16:30:38 · 2524 阅读 · 0 评论 -
CRC16--C语言实现
(一) 代码【CRC16.c】//!-----------------------------------------------------------------------------//!-----------------------------> Includes <------------------------------------//!--------------------------------------------------------------------原创 2021-07-15 15:57:42 · 1012 阅读 · 0 评论 -
CRC16的计算函数
//CRC16_MODBUSuint16_t cal_CRC16(const uint8_t* p_data, uint32_t size){ uint16_t crc = 0xFFFF; for (int pos = 0; pos < size; pos++) { crc ^= (uint16_t)p_data[pos]; // XOR byte into least sig. byte of crc for (int i = 8; i..原创 2020-09-11 10:27:31 · 903 阅读 · 0 评论 -
理解C++虚函数
1、 简单介绍C++虚函数是定义在基类中的函数,子类必须对其进行覆盖。在类中声明(无函数体的形式叫做声明)虚函数的格式如下:virtual void display();2、虚函数的作用虚函数有两大作用:(1)定义子类对象,并调用对象中未被子类覆盖的基类函数A。同时在该函数A中,又调用了已被子类覆盖的基类函数B。那此时将会调用基类中的函数B,可我们本应该调用的是子类中的覆盖函...转载 2019-07-15 19:48:55 · 205 阅读 · 0 评论 -
C语言----字符串 前 L的含义
一、在字符串前加一个L作用:unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集。如L"我的字符串"表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。strlen("asd") =3; strlen(L"asd") =6;二、_T宏可以把一个引号引起来的字符串,根据你...转载 2019-06-20 11:13:24 · 7533 阅读 · 3 评论 -
VS中添加第三方库及相对路径设置
对于一些第三方的SDK,一般会包含头文件(*.h),静态库文件(*.lib)和动态库文件(*.dll)。1. 文件位置:为了提高程序的可移植性,将第三库放在解决方案(*.sln)或者工程(*.vcxproj)文件所在的文件夹下。而不要放在其他地方,比如放在D:\某个位置,这样的话,程序在别的电脑上可能就无法运行了。2. 头文件:在工程属性->VC++目录->包含目录中添加头文件...转载 2019-05-30 20:13:26 · 1035 阅读 · 0 评论 -
C语言的static的作用
在C语言中static的作用如下第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。第三、static修饰一个函数,则这...转载 2019-05-30 11:10:55 · 297 阅读 · 0 评论 -
任务、进程、线程之间的区别
任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间...转载 2019-05-30 11:06:54 · 833 阅读 · 0 评论 -
一个数s变成另一个数n的整数倍
/* Round a given value up to a multiple of n (assuming n is a power of 2). */#define ROUND_UP(s, n) (((s) + (n) - 1) & (~(n - 1)))原创 2019-05-24 14:18:52 · 1334 阅读 · 0 评论 -
C语言----函数指针与回调函数
一.定义 回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。C语言中回调函数主要通过函数指针的方式实现。 二.代...原创 2019-03-21 11:14:29 · 397 阅读 · 0 评论 -
C#调用C或C++编写的DLL库
1.编写DLL文件(1)新建DLL工程(2)选择空工程,类型为DLL(3)添加.c文件#include <stdio.h>struct struStudent{ int a; int b; int c;};extern "C" __declspec(dllexport) int add(struStudent strS...原创 2018-05-12 13:39:09 · 746 阅读 · 0 评论 -
2字节char转16进制unsigned char或者int
在C语言中,常常需要将txt文件转换成bin文件,所以需要将两字节的字符,转换成16进制的unsigned char类型。有时也会将int型转换成两字节的char,还原时也需要转换。/*!@BriefTwo char data are combined into an unsigned char data @Param...原创 2018-05-12 13:54:06 · 3452 阅读 · 0 评论 -
将float类型数据写入寄存器中
在FreeBSD中针对寄存器在特殊情况下可能需要写入float类型的值,具体实现步骤如下://变量typedef struct{ float under_limit; float over_limit; }VFEPIO_SetRawLimit_t;typedef struct{ VFEPIO_ReqHeader_t header;...原创 2018-05-15 09:42:41 · 2795 阅读 · 0 评论 -
C语言中,事件对象(CreateEvent)、互斥对象(CreateMutex)、关键代码段(InitializeCriticalSection)
事件对象(CreateEvent)、互斥对象(CreateMutex)、关键代码段(InitializeCriticalSection)都是保证数据安全的一些措施。1、互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度较慢,但可以实现在多个进程中各线程间进行同步。2、关键代码段式工作在用户方式下,同步速度较快,但在使用关键代码段时,很容易进入死锁状态,因为在进入关键代码时无法...转载 2018-05-14 11:12:54 · 2953 阅读 · 0 评论 -
C语言中结构体与字符数组之间的相互转换
#include <stdio.h>#include <stdlib.h>#include <string.h>#pragma pack(push) //保存对齐状态 #pragma pack(1) typedef struct strcChange{ unsigned char A; unsigned int B;}...原创 2018-06-24 12:07:20 · 9947 阅读 · 0 评论 -
C语言实现天数和日期的相互转换
在网上看到了一个计算日期间隔的方法,咋一看很高深,仔细看更高神,很巧妙。先直接代码吧:#include <stdio.h>#include <stdlib.h> int day_diff(int year_start, int month_start, int day_start , int year_end, int month_end...转载 2018-08-20 15:20:32 · 7860 阅读 · 0 评论 -
C语言中的修饰符
1. __extension__ typedef int __ssize_t;是什么意思?这是.c文件经过gcc -E 预处理得到的.i文件中的内容,其中__extension__是什么作用gcc对标准C语言进行了扩展,但用到这些扩展功能时,编译器会提出警告,使用__extension__关键字会告诉gcc不要提出警告。 2. __attribute__GNU C的一大特色(却不...转载 2018-11-08 19:48:19 · 1392 阅读 · 0 评论 -
lib 和 dll 的区别、生成以及使用详解
首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产生一个....转载 2018-05-26 13:26:50 · 402 阅读 · 0 评论 -
同步、异步、阻塞、非阻塞之间的区别
1.同步阻塞IO 举一个浅显的例子,就好比你去一个银行柜台存钱。首先,你会将存钱的单子填好,然后交给柜员。这里,你就好比是application,单子就是调用的 system call,柜员就是kernel。提交好单子后,你就坐在柜台前等,相当于开始进行等待。柜员办好以后会给你一个回执,表示办好了,这就是 response。然后你就可以拿着回执干其它的事了。注意,这个时候,如果你办完之后...转载 2019-02-28 10:25:18 · 114 阅读 · 0 评论 -
C++与C#数据转换
Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char ...转载 2018-05-17 10:04:37 · 463 阅读 · 0 评论