C/C++
嵌入式核心技能
CodeAllen嵌入式
公众号【CodeAllen嵌入式】,优快云博客专家,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝15w+,欢迎交流一起成长!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构实战C++】0 为什么要学习数据结构?
【数据结构实战C++】0 数据结构是什么?作者 CodeAllen ,转载请注明出处为什么要学习数据结构?几个常见的问题语言学完了是不是有能力进行项目开发?面对一个问题的时候怎么思考?如何评价代码效率的高低好坏?怎么提高自己的编程能力?所以,数据结构的意义就是培养专业的程序思考思维训练使用编程语言描述解决方案的能力加粗样式计算机专业的基础课程算法分析专业课的先修...原创 2020-04-09 22:39:53 · 1143 阅读 · 0 评论 -
【数据结构实战C++】2 数据结构概念
【数据结构实战C++】1 数据结构概念作者 CodeAllen ,转载请注明出处程序设计中的挑战利用计算机解决现实生活中实际的问题生活中的不同个体间存在联系用计算机程序描述生活中个体间的联系问题:怎么用程序描述生活中的个体?回答:计算机接受的是数据(符号,类型等)数据的概念:程序的操作对象,用于描述客观事物数据的特点:(缺一不可)可以输入到计算机可以被计算机程序...原创 2020-04-12 17:40:09 · 1055 阅读 · 0 评论 -
【数据结构实战C++】14 线性表概念
【数据结构实战C++】14 线性表概念作者 CodeAllen ,转载请注明出处线性表(list)的表现形式零个或者多个数据元素组成的集合数据元素在位置上是有序排列的数据元素的个数是有限的数据元素的类型必须相同线性表的抽象定义线性表具有相同类型的n个数据元素的有限序列线性表的性质线性表的一些常用操作将元素插入线性表将元素从线性表中删除获取目标位置处元素的值...原创 2020-04-22 00:40:18 · 1125 阅读 · 0 评论 -
【数据结构实战C++】4 算法复杂度概念
QQ技术资料群:736386324个人微信:coderAllen (人较多,请备注公众号读者)推荐阅读:我的工程师之路,给需要的同学!---链接:https://pan.baidu.com/s/1NqA94hYLu1_deGHov27R6A提取码:58tn复制这段内容后打开百度网盘手机App,操作更方便哦...原创 2020-04-13 18:54:34 · 22568 阅读 · 0 评论 -
【数据结构实战C++】5 算法的时间复杂度
【数据结构实战C++】4 算法复杂度概念作者 CodeAllen ,转载请注明出处效率是工程中最关注的算法特性算法效率的量度的几个方法事后统计法-比较不同算法对同一组输入数据的运行处理时间-缺陷为了获得不同算法的运行时间必须编写相应程序运行时间严重依赖硬件以及运行时的环境因素算法的测试数据的选取很困难事前分析估算-依据统计的方法对算法效率进行估计-影响算法效率的主...原创 2020-04-13 16:35:14 · 1357 阅读 · 0 评论 -
【数据结构实战C++】8 泛型编程
【数据结构实战C++】8 泛型编程作者 CodeAllen ,转载请注明出处数据结构的特点-专注于数据元素之间的关系-专注于特定结构之上的算法也就是说数据结构并不关注数据元素的具体类型(这个是很关键的一个概念)如何为数据结构的学习选择合适的编程语言?从上边的分析可以知道,支持泛型编程的语言最适合学习数据结构c++是支持泛型编程的,其中的模板就是泛型编程泛型编程概念-不...原创 2020-04-15 00:40:53 · 1148 阅读 · 4 评论 -
【数据结构实战C++】13 类族结构改进
【数据结构实战C++】13 类族结构改进作者 CodeAllen ,转载请注明出处遵循经典设计准则设计的KKlib中的所有类位于单一的继承树如何通过编程改进改进的关键点-exception类继承自object类堆空间中创建异常对象失败的时候,返回NULL指针-新增InvalidOperationException异常类成员函数调用时,如果状态不正确则抛出异常-Smar...原创 2020-04-20 22:28:18 · 1115 阅读 · 0 评论 -
【数据结构实战C++】1 数据结构初探
【数据结构实战C++】1 数据结构初探作者 CodeAllen ,转载请注明出处为什么会有各种各样的程序存在?程序本质的意义是什么?程序是为了解决实际问题而存在的从本质而言,程序是为了解决问题的步骤描述如何判断问题求解步骤的好坏?判断求解步骤的好坏/* 问题:给定一个整数 n,编程求解 1 + 2 + 3 + ... + n 的和。*/#include <...原创 2020-04-09 23:03:25 · 1042 阅读 · 0 评论 -
【数据结构实战C++】6 算法效率的度量
【数据结构实战C++】6 算法效率的度量作者 CodeAllen ,转载请注明出处常见的时间复杂度常见时间复杂度的比较O(1)< O(logn)<O(n)<O(n*logn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)基本身算法时间复杂度是O(2n)O(n!)O(nn)的时候,运行时间就是不可接受的了实例分析...原创 2020-04-14 22:29:31 · 1131 阅读 · 0 评论 -
【数据结构实战C++】3 算法和程序的关系
【数据结构实战C++】3 算法和程序的关系作者 CodeAllen ,转载请注明出处数据结构静态的描述了数据之间的关系高效的程序需要在数据结构的基础上设计和选择算法-算法是特定问题求解步骤的描述-在计算机中表现为指令的有限序列算法是独立存在的一种解决问题的方法和思想对于算法而言,语言并不重要,重要的是思想算法的特征-输入:算法具有0个或多个输入-输出:算法至少有一个或...原创 2020-04-13 02:29:06 · 1237 阅读 · 0 评论 -
【数据结构实战C++】7 学习数据结构的目的
【数据结构实战C++】7 学习数据结构的目的作者 CodeAllen ,转载请注明出处数据结构课程改如何学习?1.先从概念上形象的理解元素之间的关系2.思考这种关系能够解决什么问题3.考虑基于这种关系能够产生哪些算法4.理解和熟悉最终的算法5.选择一种熟悉的语言,编码实战以后工作中会遇到数据结构的知识吗?如果只是进行嵌入式开发,需要学习数据结构吗?数据结构是计算机领域的基...原创 2020-04-14 23:20:13 · 1204 阅读 · 0 评论 -
<ctype.h> - isdigit()
作用:判断一个字符是否是十进制数字声明:int isdigit(int c);参数:要检测的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)。返回值:返回值为非零(真)表示c是十进制数字,返回值为零(假)表示c不是十进制数字。实例:#include <stdio.h>#include <ctype.h>int main () { int var1 = 'h'; int var2 = '2';...原创 2021-07-07 21:40:49 · 7232 阅读 · 0 评论 -
<assert.h> - assert()
函数声明:void assert(int expression);使用事项:这就是常说的断言函数,用法就是在调试过程中debug错误的一种方式断言是一种编程术语,可以理解为布尔类型(真或假)assert会对形参进行检查:如果expression是真的(对应值为1),则断言成功,表示程序正确,不进行任何操作如果expression是假的(对应值为0),则表明程序错误,这是assert会向终端打印一条错误,并调用abort()函数终止代码运行实例分析:#i...原创 2021-05-22 18:23:44 · 1031 阅读 · 0 评论 -
strcasecmp 字符串比较函数
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 字符串比较函数因为使用ecim方式,全部是赋值为字符串,需要比较字符串#include <strings.h>main(){char *a="aBcDeF";char *b="AbCdEf";if(!strcasecmp(a,b))printf("%s=%s\n",a,b);}...原创 2021-05-16 23:33:10 · 1241 阅读 · 0 评论 -
LinuxC语言字符串函数 - memset
之前做避障车用到了超声波模块,总结了下资料1、本模块性能稳定,测度距离精确,模块高精度,盲区小。产品应用领域:机器人避障物体测距液位检测公共安防停车场检测。2、主要技术参数:1:使用电压:DC---5V2:静态电流:小于2mA3:电平输出:高5V4:电平输出:底0V5:感应角度:不大于15...原创 2020-08-30 18:19:12 · 30494 阅读 · 6 评论 -
prctl()函数应用
对于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。今天看LWN上的周报,看到有人正在给prctl添加给进程内其它线程命名的接口,并从中得知,给线程自身命名的接口已经存在,不由窃喜,遂写下以下验证代码:#include#include#includevoid* tmain(void *arg){ char name[32]; prctl(PR_SET_NAME, (unsigned long)"xx"); prctl(PR_GET_NAME, (unsi..转载 2021-07-14 22:26:01 · 2141 阅读 · 0 评论 -
C语言标准库总结
目录背景15个标准库头文件 assert.h 诊断消息 仅包含assert宏。可以在程序中使用该宏来诊断程序状态(例如某个变量是否为0等),若检查失败,程序终止。ctype.h 字符处理包含判断字符类型及大小写转换的函数。errno.h 错误监测提供了errno。可以在调用特定库函数后检测errno的值以判断调用过程中是否有错误发生。float.h 浮点数特性提供了描述浮点数特性的宏。limits.h 整型特性...原创 2021-05-22 11:16:07 · 1343 阅读 · 0 评论 -
<ctype.h> - isgraph()
作用:判断一个字符是否是图形字符声明:int isgraph(int c);参数:要检测的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)。返回值:返回值为非零(真)表示c是图形字符,返回值为零(假)表示c不是图形字符。实例:#include <stdio.h>#include <ctype.h>int main () { int var1 = '3'; int var2 = 'm'; in...原创 2021-07-07 21:45:24 · 5903 阅读 · 0 评论 -
<ctype.h> - iscntrl()
作用:判断一个字符是否是控制字符声明:int iscntrl(int c);参数:要检测的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)。返回值:返回值为非零(真)表示c是控制字符,返回值为零(假)表示c不是控制字符。实例:#include <stdio.h>#include <ctype.h>int main () { int i = 0, j = 0; char str1[] = "all原创 2021-07-07 21:34:54 · 2557 阅读 · 0 评论 -
C语言access()函数:判断是否具有存取文件的权限
相关函数:stat, open, chmod, chown, setuid, setgid头文件:#include <unistd.h>定义函数:int access(const char * pathname, int mode);函数说明:access()会检查是否可以读/写某一已存在的文件。参数mode 有几种情况组合:1、R_OK, W_OK, X_OK和F_OK. R_OK, W_OK 与X_OK 用来检查文件是否具有读娶写入和执行的权限。2、F_OK 则是用来判断该文件是.转载 2021-07-13 21:13:04 · 1298 阅读 · 0 评论 -
memcpy() memset() 内存拷贝函数 /初始化
memcpymemcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中。void *memcpy(void *dest, const void *src, size_t n);参数都是指针从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中memcmp是比较内存区域buf1和buf2的前count个字节。该函数是按字节比较的。当buf1<buf2时,返回值小...原创 2021-05-21 08:56:03 · 2365 阅读 · 0 评论 -
<ctype.h> - isalnum()
作用:C 库函数 int isalnum(int c) 检查传递的字符是否为字母或者十进制数字。如果仅仅检测一个字符是否是字母,可以使用 isalpha() 函数;如果仅仅检测一个字符是否是十进制数字,可以使用 isdigit() 函数。如果一个字符被 isalpha() 或者 isdigit() 检测后返回“真”,那么它被 isalnum() 检测后也一定会返回“真”。声明:int isalnum(int c);参数:c: 要检测的字符。它可以是一个有效的字符(被转换为 int原创 2021-07-07 21:19:27 · 3719 阅读 · 0 评论 -
snprintf strlcpy 写字符串
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 snprintf原型为int snprintf(char *str, size_t size, const char *format, ...)功能: 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中可以有多个参数,依次写入第一个字符指针地址中举例:将ENABLED写入high...原创 2021-05-16 23:14:56 · 1173 阅读 · 0 评论 -
<ctype.h> - isalpha()
作用:检查所传的字符是否是字母声明:int isalpha(int c);参数:要检测的字符。它可以是一个有效的字符(被转换为 int 类型),也可以是 EOF(表示无效的字符)返回值:返回值为非零(真)表示c是字母,返回值为零(假)表示c不是字母。实例:#include <stdio.h>#include <ctype.h>int main () { int var1 = 'd'; int var2 = '2';原创 2021-07-07 21:27:48 · 2625 阅读 · 0 评论 -
strcpy()函数详解
strcpy()函数是C语言中的一个复制字符串的库函数,以下将详细解释说明一下:函数声明以及实现代码char *strcpy(char *dst, const char *src);char * strcpy(char *dst,const char *src) { if((dst==NULL)||(src==NULL)) return NULL; char *ret = dst; //[1] while ((*ds...转载 2021-07-15 22:51:58 · 4929 阅读 · 0 评论 -
isalpha isdigit isalnum isupper 检测字母或数字函数
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 isalpha函数函数的功能是:检测字母,如果参数(ch)是字母表中的字母(大写或小写),则返回非零。要包含头文件ctype.h。函数定义如下:int isalpha( int ch );isdigit函数 函数的功能是:检测数字,如果ch是数字则函数返回非零值,否则返回零。要包含头文件ctype.h。函数定...原创 2021-05-16 23:10:01 · 5851 阅读 · 0 评论 -
C语言后记-30 汇编语言入门教程
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。汇编语言不容易学习,就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程,解释 CPU 如何执行代码。原创 2020-12-13 21:38:23 · 1309 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串
我的首发平台是公众号【CodeAllen】,学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处【LeetCode每日一题】 3. 无重复字符的最长子串题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。思路:首先先理解题意,由示例很容易想到双指针算法和滑动窗口算法这两种算法大致介绍:算法技巧——双指针算法滑动窗口算法(Slidin.原创 2021-03-24 00:16:37 · 5330 阅读 · 0 评论 -
两个链表找首个共同节点
明确问题两个链表,说明有两个头节点(这明显是句废话!)共同节点,说明这两个链表相会了(就是都指向了同一个节点。)如图:明确思路首先我们要判断的不是“值”,相不相等,而是“指针”(Java里应该叫做引用。)解法1:暴力(不推荐!)如果你用暴力的话,这道题就没有意义了!(这句话说的 的确很中肯。)循环得出两个链表每个结点的 next(尾部:用来存放下一个节点引用的),然后再一个一个的对比时间复杂度:n的平方解法2:找规律(推荐!)链表只能从前往后找,这让这道问题的难度增加了。因转载 2020-09-30 21:41:43 · 1383 阅读 · 4 评论 -
LeetCode 1. 两数之和
直达题目:【LeetCode每日一题】 1. 两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。思路分析:1.从示例原创 2021-03-21 23:31:31 · 961 阅读 · 0 评论 -
LeetCode 4. 寻找两个正序数组的中位数
我的首发平台是公众号【CodeAllen】,学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处LeetCode 4. 寻找两个正序数组的中位数原题:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2思路:要是奇数数组的话就是中间那个数,要是偶数数量的话是中间两个数的.原创 2021-03-25 00:01:55 · 945 阅读 · 1 评论 -
1亿个数中找出最大的100个数(top K问题)
如何在1亿个数中找出最大的100个数(top K问题) 最容易想到的方法是将数据全部排序,然后在排序后的集合中进行查找,最快的排序算法的时间复杂度一般为O(nlogn),如快速排序。但是在32位的机器上,每个float类型占4个字节,1亿个浮点数就要占用400MB的存储空间,对于一些可用内存小于400M的计算机而言,很显然是不能一次将全部数据读入内存进行排序的。其实即使内存能够满足要求(我机器内存都是8GB),该方法也并不高效,因为题目的目的是寻找出最大的10000个数即可,而排序却是将所有的元素都排序转载 2020-09-30 21:29:12 · 12762 阅读 · 2 评论 -
LeetCode 2. 两数相加
我的首发平台是公众号【CodeAllen】,学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处【LeetCode每日一题】 2. 两数相加题目描述:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 .原创 2021-03-22 23:38:19 · 980 阅读 · 0 评论 -
C语言中的__attribute__宏定义之section属性
section先事先将所有的初始化函数加入到我们自己定义的输入段中,然后再在main函数中将这个输入段中初始化函数依次取出,这样就可在不修改main函数的前提下完成对系统的初始化了。的编译器, 都支持 __attribute__所指定的编译属性,这里着重讲解一下在KEIL 环境下__attribute__中的section的使用方法。那么section是怎么将这些初始化函数放入输入段中,并且系统还可以获取这些初始化函数的地址呢?这句话的意思是把整形变量test放到一个名为show的输入段中。转载 2023-09-16 17:53:46 · 1207 阅读 · 2 评论 -
编译问题:error: ‘printf’ was not declared in this scope
解决方法是在程序中添加 #include 这一行代码。这个头文件中包含了 printf 函数的声明,告诉编译器如何处理该函数。这个错误提示意味着编译器在当前作用域内无法找到 printf 函数的声明。这通常是因为没有包含 头文件导致的。原创 2023-09-03 18:26:01 · 6779 阅读 · 0 评论 -
机器学习好文集合
【机器学习算法】10种常见机器学习算法+Python代码 - 未来达摩大师的文章 - 知乎。因为工作原因需要研究机器学习在嵌入式方向的应用,喜欢的同学可以关注下,会持续更新!机器学习经典的50个问题(附答案) - 小刘老师聊数字化的文章 - 知乎。原创 2023-02-15 07:49:06 · 396 阅读 · 0 评论
分享