C
记录C语言相关知识
陈 洪 伟
这个作者很懒,什么都没留下…
展开
-
C++多线程参数传递以及不同线程之间数据传递问题
C++多线程参数传递问题转载 2024-05-27 09:50:16 · 573 阅读 · 0 评论 -
std::this_thread::sleep_for 函数使用
std::this_thread::sleep_for 函数使用原创 2022-09-15 17:40:20 · 999 阅读 · 0 评论 -
根据帧率控制延时时间
根据帧率控制延时时间原创 2022-09-01 13:49:21 · 407 阅读 · 0 评论 -
C/C++获取cpu的id和名字
目录1 X86 linux获取cpu ID2 ARM linux获取cpu ID3 获取cpu name1 X86 linux获取cpu ID我们在x86 Linux中可以在命令行中用如下命令来得到cpu IDdmidecode -t 4 | grep ID如果想在代码中实现,用如下代码static inline char* skip_ws(const char *p){ while (isspace(*p)) p++; return (char *)p;}.原创 2022-04-26 11:29:24 · 4506 阅读 · 1 评论 -
fp16半精度浮点数转成float类型------C/C++
在深度学习算法模型推理时,会遇到fp16类型,但是我们的c语言中没有这种类型,直接转成unsigned short又会丧失精度,因此我们首先将FP16转成float类型,再进行计算。方法1:typedef unsigned short ushort;//占用2个字节typedef unsigned int uint; //占用4个字节uint as_uint(const float x) { return *(uint*)&x;}float as_float(con原创 2022-03-15 15:11:20 · 7425 阅读 · 3 评论 -
C/C++中的static关键字——未完待续
static关键字主要分为下面五种情况,下面分别进行说明静态成员变量(面向对象) 静态成员函数(面向对象) 静态全局变量(面向过程) 静态局部变量(面向过程) 静态函数(面向过程)参考文献:C/C++ 中的static关键字 - 知乎...原创 2021-11-21 18:28:35 · 404 阅读 · 0 评论 -
C语言宏定义中#,#@,##,__VA_ARGS___的使用
目录1 #:用来把参数转换成字符串2 ##:用于带参数的宏定义中,将两个字符连接成一个字符3.__VA_ARGS__:用于在宏替换部分中,表示可变参数列表4##__VA_ARGS__宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错1 #:用来把参数转换成字符串#define LOG(X) PRINTF("%s:%d\n", #X, X)int main(){ int a = 1; int b = ..原创 2021-11-21 07:46:25 · 1143 阅读 · 0 评论 -
C语言可变参数详解
1.什么是可变参数在C语言编程中有时会遇到一些参数可变的函数,例如printf()、scanf(),其函数原型为:int printf(const char* format,…)int scanf(const char *format,…)就拿 printf 来说吧,它除了有一个参数 format 固定以外,后面的参数其个数和类型都是可变的,用三个点“…”作为参数占位符。2.参数列表的构成任何一个可变参数的函数都可以分为两部分:固定参数和可选参数。至少要有一个固定参数,其声明与普通函转载 2021-11-20 21:06:17 · 6574 阅读 · 0 评论 -
C语言读取txt文件内容
C++读取txt文件内容的几行代码备份,后面用到时直接复制粘贴。char *readLine(FILE *fp, char *buffer, int *len){ int ch; int i = 0; size_t buff_len = 0; buffer = (char *)malloc(buff_len + 1); if (!buffer) return NULL; // Out of memory while ((ch = f原创 2021-10-26 09:46:32 · 5301 阅读 · 0 评论 -
c语言用递归判断一个数组是递增还是递减
1.xian参考文献:https://zhidao.baidu.com/question/559001788.html转载 2021-06-17 19:02:55 · 3372 阅读 · 0 评论 -
ARM运行C程序的内部机制
在前面的S3C2440逻辑的LED实验中,我们用C语言控制了LED,在C语言前面我们还编写了一段汇编代码用来设置栈,下面我们以这个实验为例子看一下C语言的内部机制。1.汇编代码.text.global _start_start: /* 设置内存: sp 栈 */ ldr sp, =4096 /* nand启动 */// ldr sp, =0x40000000+4096 /* nor启动 */ /* 调用main */ bl mainhalt: b halt 2原创 2021-03-13 15:44:32 · 461 阅读 · 0 评论 -
cJSON使用笔记(转载自鱼竿的传说)
缘 起 ...转载 2019-11-29 11:23:00 · 155 阅读 · 0 评论 -
cJSON文件
//cJSON.h/* Copyright (c) 2009 Dave Gamble Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including.原创 2020-09-15 10:05:29 · 260 阅读 · 0 评论 -
C++中的extern C,以及一个编译错误
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。某项目中,在s...原创 2019-10-17 17:32:00 · 2036 阅读 · 0 评论 -
Linux下生成core文件,并用gdb调试core文件/ gdb调试段错误方法
在写C/C++程序时,有时会遇到段错误,这个时候用gdb的bt命令根据堆栈信息一般都能很好的定位到程序是崩溃在哪里.gdb ./a.outrun #执行之后崩溃bt #查看堆栈信息原创 2020-10-23 14:05:22 · 1259 阅读 · 0 评论 -
C/C++的时间函数使用
一、获取日历时间time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:typedef long time_t; /* time value */可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年1月18日19时14分07秒。函数time可以获取当前日历时间时间,time的定义:time_t time(time_t *)#include <iostr...转载 2020-10-19 14:42:37 · 4468 阅读 · 0 评论 -
原码、反码、补码以及为什么要用反码和补码
机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1,比如,十进制中的+3,假设计算机字长为8位,转换成二进制就是0000 0011,如果是-3,就是1000 0011.那么,这里0000 0011和1000 0011就是机器数,真值因为第一位为符号位,所以机器数的形式值就不等于真正的数值,例如上...原创 2015-05-22 21:36:00 · 486 阅读 · 0 评论 -
补码的求法以及八位二进制补码所能表示的数的范围
补码用来解决整数的存储问题,整数在计算机中是以二进制的补码形式进行存储的,求十进制对应的二进制补码1求正整数的二进制补码:正整数的二进制补码与其二进制原码相同,2:求负整数的二进制补码:先求与该负数相对应的正整数的二进制代码,然后所有位取反加1,不够位数时左边补1,例如,求-3的二进制补码,先求3的二进制补码,3=11,取反之后为00,加1之后为01,假设用八位二进制表示,那...原创 2015-05-23 09:51:00 · 4242 阅读 · 0 评论 -
移码及浮点数在内存中的存储方式
First of all,we need to know how the decimal decimal is converted into a binary decimal.计算机根本就不认识10进制的数据,他只认识0和1,所以,10进制的小数在计算机中是用二进制的小数表示的。十进制的小数转化为二进制的小数的方法:可以简单的概括为正序取整,将十进制的小数部分乘以2,然后取整数部...原创 2015-05-29 22:46:00 · 504 阅读 · 0 评论 -
函数调用的过程是怎么样的
函数调用的过程是怎么样的,什么入栈出栈的,当在一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要完成三件事,将所有的实际参数,返回地址等信息传递给被调函数保存,为被调函数的局部变量(也包括形参)分配存储空间将控制转移到被调函数的入口,从被调函数返回到主调函数之前,系统也要完成三件事,保存被调函数的返回结果,释放被调函数所占的存储空间...原创 2015-08-13 10:52:00 · 650 阅读 · 0 评论 -
用指针做函数参数的好处,
用指针做函数参数的好处,首先要理解函数传参的过程,函数传参是复制型的,例如void modify(int a){a++;}void main(){int a=5;modify(a);printf("%d",a);}程序执行完之后,a的值还是5,为什么呢,因为在执行modify函数的时候,是另外开辟了存储空间,将a的值复制过去,然后modif...原创 2015-08-13 10:52:00 · 748 阅读 · 0 评论 -
C语言郝斌视频笔记
39:Printf的%#X的话,输出的变量前面会自动加上0Xscanf如果包含非输入控制符,那么非输入控制符原样输入。所以在scanf中尽量不要用非输入控制符,尤其是不要使用\n。要是使用了\n的话,输入的时候在输入完数据之后必须原样输入一个\n,按回车没用。42:/ (除),当两个整数使用这个运算符的时候,结果是整数,小数部分将会被舍弃,将参与运算的两个数中有一个是浮点数或者两...原创 2017-07-20 14:02:00 · 120 阅读 · 0 评论 -
C/C++ 中的__FILE__,__FUNCTION__,__LINE__,__DATE__,__TIME__,
__FILE__,__FUNCTION__,__LINE__,__DATE__,__TIME__,上面的几个变量是C语言预定义的宏,编译器遇到这几个变量就会自动的用相应的值替换,需要注意的是,__DATE__,__TIME__,处理的时候要用%s进行处理, sprintf(tmpDate, "%s", __DATE__); /* "Sep12 2018" */...原创 2018-12-05 20:50:00 · 332 阅读 · 0 评论 -
C/C++中do{...}while(0)的作用
一:do{...}while(0)在定义宏时的作用。其实就是能够让你定义的宏按照你期望的方式执行而没有语法或逻辑错误,无论这个宏是在if判断里面使用还是放在其他别的地方使用。1.在后面要加分号,使调用如同函数,例如 1 #define DELETE_POINTER(p) \ 3 do { \ 5 if(NUL...原创 2018-12-06 15:03:00 · 280 阅读 · 0 评论 -
打印等级
1 #define log_err(fmt...) \2 do{ \3 if(logErrLevel <= logLevel) \4 { ...原创 2018-12-07 14:41:00 · 167 阅读 · 0 评论 -
fopen fwrite fread fseek
fread和fwrite之后,相应的读写指针都会自动的往后移动。原创 2019-10-19 14:08:00 · 167 阅读 · 0 评论 -
利用C库函数clock()计算程序执行时间
clock_t start,end;double total_time = 0.0f;start = clock();end = clock();total_time = (double)(end-start)/CLOCKS_PER_SEC;原创 2019-10-31 14:32:00 · 511 阅读 · 0 评论 -
C/C++从路径字符串中获取文件名
原创 2020-05-12 13:40:00 · 2046 阅读 · 0 评论 -
C/C++的延时函数
void delay(int seconds){ clock_t start = clock(); clock_t lay = (clock_t)seconds * CLOCKS_PER_SEC; while ((clock()-start) < lay);}原创 2020-06-04 16:45:00 · 762 阅读 · 0 评论