c语言
super尚
热爱学习的一枚研究僧
展开
-
keil中自己定义的枚举报错error: #101: “RS485_TX“ has already been declared in the current scope
因为是把62行的#endif放到了55行那里 导致后边的自己写的东西报错。把#endif放最后就好了原创 2021-07-17 23:07:36 · 1464 阅读 · 0 评论 -
力扣专题——169. 多数元素
题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3] 输出:3示例 2:输入:[2,2,1,1,1,2,2] 输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。解题思路投票法:根据题意可知。数组中众数的数量是大于其他数据之和的数量。所以众数的票数是一定大于其他所有票数之和。具体实现就在每一个原创 2021-06-20 22:00:32 · 131 阅读 · 0 评论 -
领扣专题——150. 逆波兰表达式求值
题目:根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 :输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9输入:tokens = ["4","13","5","/","+"]输出:6解释:该原创 2021-03-20 21:36:34 · 101 阅读 · 0 评论 -
atoi——“C 语言库函数”
c语言库函数: 作用是讲str指向的字符串转换为整数int,该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。 1. int atoi(const char *str)原创 2021-03-20 17:26:48 · 84 阅读 · 0 评论 -
cannot open source input file “core_cm3.h“: No such file or directory
开发环境keil5.14开发环境keil5.14板子LPC1850。原创 2021-03-13 16:17:48 · 3077 阅读 · 2 评论 -
解决:keil生成的bin文件用不了,也没报错
我安装的keil版本是5.14使用LPC1850跑例程的时候经过一番配置,编译连接都没报错。但是代码就是在板子上跑不起来。最后发现好像是因为keil版本太高移植的时候的问题,解决方法:当你在keil中第一次打开你需要的工程的时候,会弹出一个页面,直接选择第二个就行。当然,如果你已经安装你这个代码的支持文件,就是那个pack,如下图,那么你就直接点击“cancel”取消即可(我使用的是LPC1850,如果你是其他版本,那就去找其他版本下载。)...原创 2021-03-13 16:02:52 · 979 阅读 · 0 评论 -
编辑编译连接
编译器在生成可执行文件时,先将每个.c文件编译成.o文件(此过程叫编译),然后将很多个.o文件链接成可执行文件(此过程叫链接)。在链接的过程中,会用到一个描述文件,用来指定链接时的行为。这个描述文件叫做链接文件,如linux下的.ld文件,keil中的分散加载文件(.sct文件)。...原创 2021-03-13 15:25:01 · 436 阅读 · 0 评论 -
力扣专题——1030.距离排序矩阵单元格
题目给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)示例 1:输入:R = 1, C = 2原创 2020-11-17 21:41:56 · 80 阅读 · 0 评论 -
C语言中const void *a是什么意思
const void *aconst是定义常量,不可修改。void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。这是定义了一个指针a,a可以制指向任意类型的值,但它指向的值必须是常量,在这种情况下,我们不能修改被指向的对象,但可以使指针指向其他对象。因此,void * 类型指针,这个类型指针指向了实实在在的存放数据的地址,但是该地址存放的数据的数据类型我们暂时不知道。举个例子,我们的动态内存分配就是这样,一开始只是分配地址,但没有知道这块地址用了存放什原创 2020-11-09 18:47:07 · 10805 阅读 · 0 评论 -
C语言中空指针的理解
空指针实质上是有指向的指针,但它指向的地址是很小的地址它在头文件stdio.h中,这样定义的 #define NULL ((void *)0)显然,这是一个宏定义。NULL 实际上是((void*)0) ,容易看出,外层的括号纯粹是为了防止歧义;里层的括号则是强制类型转换,转换成void * 类型,本来void * 类型是用来存放地址的,那么这里的0自然就是地址0了。在内存分配方面,较小的地址是不用来存放数据的,也不允许程序访问的。所以,指针指向了它,就是这个指针不能操作它指向的这块较小的地址。简原创 2020-11-09 18:44:54 · 2640 阅读 · 2 评论 -
C语言中qsort函数的解读
C语言中有一个快速排序的标准库函数 qsort ,在stdlib.h 中声明,其原型为:void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));该函数,可对任何类型的一维数组排序。 参数: base 是待排序数组的起始地址 nelem 是待排序数组的元素个数 width 是待排序数组的每个元素的大小(以字节为单位) pfCompare 是一个函原创 2020-11-09 17:07:12 · 447 阅读 · 0 评论 -
C语言快速比较两数大小——fmax,fmin函数
math.h中的函数,使用时需要在.c文件中include<math.h>作用是返回两个浮点参数中较大的一个#include <stdio.h>#include <math.h> int main(void){ printf("fmax(2,1) = %f\n", fmax(2,1)); printf("fmax(-Inf,0) = %f\n", fmax(-INFINITY,0)); printf("fmax(NaN,-1) =原创 2020-11-08 18:26:44 · 20078 阅读 · 0 评论 -
memset(b, 0, sizeof(b));函数的功能
memset是个函数,它在string.h头文件中有声明。它有三个参数,一是所要set的首地址,二是set的值,三是set的字节数。num大部分情况下是个数组,因为数组在传参时能自动转成指向数组的首元素的指针;如果不是数组,应该写成memset(&b, 0, sizeof(b));...原创 2020-10-14 19:16:28 · 4513 阅读 · 0 评论 -
秒懂之atoi()函数!
atoi()函数形式:int atoi(const char *str );功能:把字符串转换成整型数。str:要进行转换的字符串返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0。例如:输入“123456”字符串,可以转换为对应的数字;但是输入“abcd”,就不可以了,返回0值。说明:当第一个字符不能识别为数字时,函数将停止读入输入字符串。...原创 2020-09-28 11:11:49 · 1562 阅读 · 0 评论 -
strsep函数详解
函数原型:char *strsep(char **s, const char *delim);功能:是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL。...原创 2020-09-28 11:02:50 · 5355 阅读 · 0 评论 -
快速理解:memmove和memcopy的区别
memcpy和memmove()都是C语言中的库函数在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count);他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。...原创 2020-09-28 10:49:17 · 287 阅读 · 0 评论 -
CodeBlocks无法编译的解决方案
1.下载的版本中没有包含编译器解决方法:建议去网上自己查找含有编译器的版本;2.安装时未按默认安装目录安装解决方法:1.打开软件,找到setting,点击选择下拉菜单中的compiler;2.找到下图的toolchain,第二步点击那三个小点点,去找到MinGW的文件路径即可。3.实在嫌麻烦,就卸载,然后直接一路默认安装一遍就可以啦!...原创 2020-03-24 22:06:59 · 4003 阅读 · 2 评论 -
秒懂!calloc与mallocd的区别
这里写自定义目录标题两者都是动态分配内存,不同的是:calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。...原创 2020-03-20 20:36:15 · 111 阅读 · 0 评论 -
折半查找简明教程——附代码
折半查找又称二分查找,顾名思义,就是每次将一组已排序的数据取中间位置middle,最低位low,最高位high,与要查找的目标数据进行对比,如果数据比middle数大,就将low坐标移到middle+1;若数据比middle数小,就将high坐标移到middle-1的位置。最终匹配到的一定是middle。int searchInsert(int* nums, int numsSize, int ...原创 2020-03-20 21:35:59 · 413 阅读 · 0 评论 -
一分钟搞懂与、或、非、异或优先级!
¬(非)和∧(异或)优先级高,因为他们是单运算符。&(与)和 ∣(或)优先级低,因为他们是双运算符,就是说需要两边都有数据才能运算。给个网图(侵删)自己好好记忆一下,优先级从上往下降低。...原创 2020-03-23 21:09:02 · 34680 阅读 · 2 评论