![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
IT技术猿猴
这个作者很懒,什么都没留下…
展开
-
一个简单的CRC16算法的C语言代码
该代码使用了一个16位的多项式0x1021,对给定的数据进行CRC校验,返回一个16位的结果。在循环中,每个字节都被异或到当前的CRC值中,并且根据CRC算法进行了位运算。最终的结果是一个16位的CRC值。原创 2023-03-30 16:11:40 · 425 阅读 · 0 评论 -
int *p = &a、p = &a、*p = a
/定义引用r表示变量m,后续所有的r都可以作为m来使用,改变r的值会同步修改m。是错误的,提示不能将int * 类型的值分配到int类型的实体。同时在C++中存在引用方法,引用和指针的差异在引用绑定后不可更改绑定对象,指针可以更改指向对象。//初始化一个int *类型指针,同时将变量a的地址存入p指针。//将变量a的地址存入p指针,此时p表示变量a的地址。//表示指针p指向变量a,这时*p表示变量a的数值。区别在于在指针中p表示一个地址,存储的是变量的位置。*p表示一个变量,存储的是一个值。原创 2023-03-20 12:01:10 · 729 阅读 · 0 评论 -
C语言指针函数
"typedef int* Func(int)"中 Func 是函数类型(函数返回值类型为 int*,参数类型为 int)"typedef int (*PFunc)(int)"中 PFunc是函数指针类型(该指针类型指向返回值类型为。变量 PFunc 的类型为一个函数指针,指向的返回值类型为 int,参数类型为 int 的函数。变量 Func 的类型为一个函数标识符,该函数返回值类型为 int*,参数类型为 int;去掉 typedef ,得到正常变量声明=> int (*PFunc)(int);原创 2023-03-20 11:51:55 · 285 阅读 · 0 评论 -
回溯法C语言
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现 原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法, 而满足回溯条件的某个状态的点称为“回溯点”。例如:找出 n 个自然数(1,2,3,…,n)中 r 个数的组合。例如,当 n=5,r=3 时,所有组合为:将自然数排列在数组 A 中:排数时从 A[1] A[2] A[3],后一个至少比前一个数小1,并且应满足 ri+A[ri]>r。 若 ri+A[ri]≤r 就要回原创 2022-02-26 13:42:33 · 1338 阅读 · 0 评论 -
数制转换C语言十进制转换为其他进制数字
编程输入十进制N(N:-32767~32767),请输出它对应的二 进制、 八进制、十六进制数。例如:十进制数转化为某进制数的转换方法,如下图示:例中 n=222(十进制数),转换成 x 进制数的过程如下图示:将每次所得的余数由下至上排列(逆序取余数),即有:(222)10 转换成二进制数得到:1100010 (222)10 转换成八进制数得到:336 (222)10 转换成十六进制数得到:13、14这时得到的逆序余数串(在数组 B[1]、B[2]、……、B[k]中)的.原创 2022-02-26 13:39:22 · 2960 阅读 · 0 评论 -
求5×5阶螺旋方阵
求5×5阶螺旋方阵原创 2022-02-16 17:07:19 · 1502 阅读 · 0 评论 -
BLF格式的CAN数据
Vector工具录制的数据,一般有ASC和BLF两种格式,本文介绍BLF。1.BLF定义BLF(binary logging format)即二进制数据文件。2.BLF查看因其是二进制文件,且又做了数据压缩,已经无法直接看到物理数值。需要在Vector工具中回放。3.BLF组成《CAN_and_General_BLF_Format.pdf》此文档详细说明了BLF内容。BLF内由一系列数据块组成。介绍几个常用的:VBLObjectHeaderBaseVBLObjectHeade原创 2022-02-08 09:09:22 · 10914 阅读 · 0 评论 -
C语言指针
1、指针的基本知识(1)定义int *p;(2)赋值 1) int a;int *p=&a 2) int a ;int *p;p=&a下面的赋值方法是 错误的;不允许将具体的数值进行赋值;被赋值的指针变量前不能再添加*;1)int *p;p=1000;2)int *p;int a;*p=&a赋值运算1)初始化2)变量地址赋值指针 ...原创 2019-01-15 22:17:56 · 277 阅读 · 0 评论 -
C语言位操作
1、交换a和b的值a=a^b; b=b^a; a=a^b;2、左移a=a<<2;a的二进制左移2位,右边补0;高位左移后溢出,舍弃;(此方法仅仅适用于a值左移时被溢出的高位中不包含1的情况)eg:假设以一个字节(8位)存一个数,若a为无符号整型变量,a=64,左移一位时,高位溢出的是0,而左移两位的时候,高位溢出的包含1。aa的二进制a<<1...原创 2019-01-14 20:05:43 · 1292 阅读 · 0 评论 -
volatile类型修饰符
volatile是一个类型修饰符,其作用是作为指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次直接读值。简单来说,就是防止编译器对代码进行优化。eg:a[1]=1;a[1]=2;a[1]=3;a[1]=4;对于外部硬件而言,上述四条语句分别表示不同的操作,会产生不同的动作,但是编译器却会对上述四条语句进行优化,认为只有a[1]=4有效;如果加入关键字volatile,则编...原创 2018-12-09 14:38:51 · 1030 阅读 · 0 评论 -
判断系统内存存储是大端还是小端
1、判断大小端bool isBigEndian(){ unsigned int test=0x1234; if(*((unsigned char *)&test) == 0x12) { return true; } else { return false; }}原创 2018-12-09 11:52:01 · 669 阅读 · 0 评论 -
C语言陷阱二
1、sizeof的返回值类型为unsigned 类型;int array[]={23,24,25,16,13,205,99};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))main(){ int d=-1; /*...*/ if(d <= TOTAL_ELEMTNHTS-2) { x=array[d+1];...原创 2018-12-09 11:29:45 · 439 阅读 · 0 评论 -
C语言陷阱一
1、while ( c= ' ' || c== '\t' || c== '\n') c=getc(f);程序员有时候会将=写成==,因为赋值运算符=的优先级要低于逻辑运算符||,因此实际上上述表达式是把 **’ ’ || c== ‘\t’ || c== ‘\n’**的值赋值给c,因为’ '不等于0(ASCII码值为32),所以无论变量c为何值,上述表达式的结果都是1,因此循环将一直下去知道...原创 2018-11-25 22:42:55 · 595 阅读 · 0 评论 -
C语言的运算符顺序
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。第一列运算符名称或含义使用形式结合方向单目运算符[]数组下标数组名[整型表达式]左到右()圆括号(表达式...原创 2018-11-25 20:39:47 · 8621 阅读 · 0 评论 -
多线程属性pthread_attr详解
Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。线程属性结构如下: typedef struct { int ...转载 2018-11-20 10:47:41 · 11861 阅读 · 4 评论 -
多线程技术
进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系...转载 2018-11-20 10:12:39 · 213 阅读 · 0 评论 -
typedef详解以及与宏定义#define的区别
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中;typedef 中文解释:声明类型;typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(...原创 2018-11-23 23:02:25 · 1907 阅读 · 0 评论 -
理解C语言复杂声明的优先级规则
从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。int (*func)(int *p);首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明 (func)是一个函数,所以func是一个指向这类函数的指针,即函数指针,这...原创 2018-11-23 22:05:53 · 331 阅读 · 0 评论 -
c语言中在main函数之前会执行什么
一般程序中都是认为C语言程序在运行过程中,是由Main函数开始,最后到Main函数结束。实际上,在可执行文件被加载之后,控制权立即交给由编译器插入的Start函数,它将对后面这些全局变量进行准备:_osver 操作系统的构件编号_winmajor 操作系统的主版本号_winminor 操作系统的次版本号_winver 操作系统完全版本号 _argc 命令行参数个数 _arg...原创 2015-11-08 20:39:14 · 2735 阅读 · 0 评论