![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
超级张大侠
这个作者很懒,什么都没留下…
展开
-
一些C语言常见问题
memcpy与memmove在while循环中,break,continue,return有什么区别#if、#if defined、#if !defined、#ifdef、#ifndef、#error转载 2021-11-22 14:41:16 · 126 阅读 · 0 评论 -
C标准库字符串相关
strstr(str1,str2)函数使用时注意事项C语言:strcmp()---字符串比较字符串函数---strstr()、memchr()、strchr()详解及实现strcat函数用法字符串分割利器—strtok_r函数strrchr()函数strtok_r具体实现转载 2021-11-03 09:21:05 · 77 阅读 · 0 评论 -
C/C++常用库函数表以及知识点
C/C++常用库函数表以及知识点1.标准文件函数(文件的打开、关闭、读和写等)fopen()函数详解转载 2021-07-16 08:49:11 · 1321 阅读 · 0 评论 -
C语言中如何产生一个随机数及其原理
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。 可能大家都知道C语言中的随机函数random,可是random函数并...转载 2020-09-07 14:27:40 · 3349 阅读 · 3 评论 -
函数指针
函数指针的好处、作用函数指针的作用以及好处提供封装性能。有点面向对象编程的特点。比如设计一个栈结构typedef struct _c_stack{int base_size;int point;int * base;int size;int(*pop)(struct _c_stack *);int...转载 2020-06-05 16:10:38 · 213 阅读 · 0 评论 -
C语言的本质(4)——浮点数的本质与运算
C语言的本质(4)——浮点数的本质与运算 C语言规定了3种浮点数,float型、double型和long double型,其中float型占4个字节,double型占8个字节,longdouble型长度要大于等于double型,本文档将以float型为例进行...转载 2020-06-04 15:37:03 · 994 阅读 · 0 评论 -
不可将两个浮点数 直接做 相等比较判断
a=0.333,b=0.333,if(a==b){}能这样用吗?看起来没问题,其实问题很大。浮点数和double型数在计算机中并不能精确存储,所以看似相等,但是在计算机中存储的二进制不一定相等,所以浮点数的比较是否相等,一般是让两个浮点数相减求绝对值,绝对值在某个范围内就认为相等,至于之歌范围是多大也是自己决定的,还有一种办法,浮点数乘整数倍数,然后转化为整型,再去做比较,函数如下:u8 FloatEqual(float f1,float f2){ u8 res = 0;.转载 2020-06-04 13:50:12 · 1630 阅读 · 0 评论 -
数组和链表的区别和优缺点总结!
数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。链表中各结点在内存中的存放位置是任意的。 链表与数组的主要区别(1)数组的元素个数是固定的,而组成链表的结点个数可按需要增减;(2)数组元素的存诸单元在数组定义时分配,链表结点的存储单元在程序执行时动态...转载 2020-06-04 13:24:54 · 1892 阅读 · 0 评论 -
一文搞懂C语言回调函数
一文搞懂C语言回调函数转载 2020-06-02 13:15:54 · 240 阅读 · 0 评论 -
平均值滤波算法
平均值滤波之鬼斧神工算法十大平均滤波算法转载 2020-05-14 17:00:08 · 1612 阅读 · 0 评论 -
局部变量能否和全局变量重名
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " (域解析符) 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义...转载 2019-09-16 09:54:08 · 11963 阅读 · 0 评论 -
局部变量作为函数返回值
参考:《C语言程序设计(苏小红)》P334-351 动态内存分配char *strA(){ char str[] = "hello word"; return str;}上述程序有什么问题?简单的来说,str是个局部变量的地址,作为返回值,有可能被提前回收。那么局部变量可以作为函数的返回值吗,这个问题不能一概而论。局部变量作为返回值时,一般是系统先申请一个临时...转载 2019-09-10 14:43:45 · 1200 阅读 · 0 评论 -
c语言链表详解
链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两部分,一个数据域,一个是指针域。说到这里你应该就明白...转载 2019-09-10 11:38:33 · 1201 阅读 · 0 评论 -
枚举
不同枚举中的名字必须互不相同。同一枚举中不同的名字可以具有相同的值。枚举为建立常量值与名字之间的关联提供了一种便利的方式。相对于#define语句来说,枚举的优势在于常量值可以自动生成。尽管可以声明enum类型的变量,但编译器不检查这种类型的变量中存储的值是否为该枚举的有效值。不过,枚举变量提供这种检查,因此枚举比#define更具优势。枚举型是一个集合,集合中的元素(枚举成...原创 2019-08-28 16:00:00 · 295 阅读 · 0 评论 -
最全的ASCII码对照表
十进制代码 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符1 0 0 NUL 空字符 1 1 SOH 标...转载 2019-08-23 14:15:22 · 46720 阅读 · 1 评论 -
用include 引用头文件时,双引号和尖括号的区别
用include 引用头文件时,双引号和尖括号的区别:1.双引号:引用非标准库的头文件,编译器首先在程序源文件所在目录查找,如果未找到,则去系统默认目录查找,通常用于引用用户自定义的头文件。2.尖扩号:只在系统默认目录(在Linux系统中通常为/usr/include目录)或者尖括号内的路径查找,通常用于引用标准库中自带的头文件。综上,标准库自带的头文件既可以用双引号也可以用尖括号,不过...转载 2019-08-19 13:13:09 · 4538 阅读 · 0 评论 -
MD5算法原理及其实现
...转载 2019-07-26 10:15:40 · 559 阅读 · 0 评论 -
C语言中static变量详解
Static翻译出来是“静态”“静止”的意思,在C语言中的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数。经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势。想知道经static修饰过后的变量或者函数的作用域或者存储域...转载 2019-04-01 13:16:11 · 1025 阅读 · 0 评论 -
C语言中.h和.c文件解析
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝...转载 2019-04-02 08:21:00 · 193 阅读 · 0 评论 -
C语言中whlie(1)跳出循环的三种结束方式
本次要讲的方式有三种:break;return;goto;示例代码: #include <stdio.h>int main(void){int i=0,j=5;while(1){if(i<=j){printf(“i=%d\n”,i);i++;}...转载 2019-04-13 10:42:34 · 5318 阅读 · 0 评论 -
C语言位运算符异或^
异或:位运算符,两数相"异",则为真(1)。简单的描述其作用就是0 ^ 1=1,0 ^ 0=0,1 ^ 1=0。参加运算的两个二进制位为同号,则结果为0,异号则为1。异或的特性及应用:1.使特定位翻转 假设有01111010,想使其低4位翻转,即1变为0,0变为1,可以将它与00001111进行 ^ 运算,即结果值的低4位正好是原数低4位的翻转。要使哪几位翻转就将与其 ^ 运算的该几位置为...转载 2019-04-23 13:23:23 · 2375 阅读 · 0 评论 -
strcmp( )函数
strcmp的用法所在头文件:string.h功能:比较字符串s1和s2。一般形式:strcmp(字符串1,字符串2)说明:当s1<s2时,返回为负数 注意不是-1当s1==s2时,返回值= 0当s1>s2时,返回正数 注意不是1即:两个字符串自左向右逐个字符相比(按ASCII值...转载 2019-04-19 11:40:06 · 302 阅读 · 0 评论 -
栈内存
程序和数据都存储在存储器中。 存储器又分为易失存储器(内存)和非易失存储器(硬盘)。 对于C/C++编程人员而言,内存是最重要的操作对象。 计算机的内存被编组为“地址-值”这样的关系对。 现代计算机把内存分为三种类型:栈内存、堆内存、程序内存。本文重点关注栈内存。正文学过数据结构都知道,栈内存严格按照“先入后出”的原则。通常使用栈的顶部进行操作,数据在栈顶“入栈”,之后还是在栈顶“出...转载 2019-04-19 13:23:59 · 406 阅读 · 0 评论 -
嵌入式中volatile、static、const、extern的用法
1.volatile2.const3.static转自:https://blog.csdn.net/xy010902100449/article/details/48441785https://blog.csdn.net/neuq521/article/details/8524117https://blog.csdn.net/windsnow1/article/details/8...转载 2019-05-20 10:34:02 · 490 阅读 · 0 评论 -
.h文件注意问题
头文件之间如果有包含关系的话,顺序不一样可能会出错变量先用到的.h文件要包含到前面原创 2019-05-20 14:38:59 · 3028 阅读 · 0 评论 -
asm(” RPT #7 || NOP”)
其实这条语句在DSP等系统开发中经常要用到,比如更改某些配置后需要延时几个时钟周期才能够生效,这时asm(” RPT #7 || NOP”)便可以闪亮登场了。虽然这个功能我们都知道而且经常使用,但是具体的细节很多人却不知道,包括我。今天在一个交流群里有人突然问这条指令下去执行...转载 2019-05-15 10:10:11 · 1688 阅读 · 0 评论 -
状态机相关
状态机的c语言编程C语言实现状态机一个串口接收数据的状态机状态机-编程资料大全整理:状态机的C语言编程简单层次状态机的C语言实现状态机思路在程序设计中的应用...转载 2019-07-05 11:55:15 · 108 阅读 · 0 评论 -
CRC 算法的简单说明
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导前言CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式。其实,在网上有一篇介绍CRC 算...转载 2019-07-25 11:42:54 · 1841 阅读 · 0 评论 -
深入理解指针
1 、我的总结:int *p;指针的类型【去掉p,剩下的】指针所指向的类型【去掉*p,剩下的】2 、sizeof()测试结果int (*ptr)[3]; //ptr代表指针,因此测得值为4int *ptr[3]; //ptr代表数组名,每个成员是int * ,因此占3个*4=12当pt...转载 2019-07-25 11:54:17 · 232 阅读 · 0 评论 -
堆栈在C语言中的定义(单片机的中堆栈相当于栈)
在计机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,...转载 2019-07-25 13:41:43 · 403 阅读 · 0 评论 -
memcpy与strcpy区别
【FROM MSDN && 百科】原型: void *memcpy(void *dest, const void *src, size_t n);#include<string.h>功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中C...转载 2019-04-01 11:44:03 · 1584 阅读 · 0 评论