
C/C++
文章平均质量分 94
西米爱吃虾米
每天进步一点点吧。。
展开
-
命名规范与注释规范概述
概述本文根据自己的日常代码书写习惯,整理一下关于C语言编码过程中的命名规范和注释规范。每个人有自己的编程习惯,本文仅供参考,不作为标准。正文由于本人学习安富莱的教材,感觉其编码规范做得很好,所以我们参考安富莱的命名规范来学习。1、文件与目录文件命名文件的命名需要准确清晰,适当使用字母缩写,使得名字精简。如:App.c、Uart.c等。头文件中段落安排顺序1、文件头注释2、防止重复引用头文件的设置3、#include部分4、enum常量声明5、类型声明和定义,包括struct、uni原创 2021-10-09 22:40:35 · 682 阅读 · 1 评论 -
数组实现简单的栈操作
前言单片机开发过程中,常常会用到栈操作,例如多级菜单的页面跳转,这里分享一个自己C语言写的非常简单的栈操作文件供各位参考。源代码#include "bsp_user_stk.h"uint8_t stack[STACK_SIZE];__IO static int top_element = -1; //指向栈顶元素的指针void push(uint8_t val){ if(is_full() == 0){ top_element++; stack[top_element]原创 2020-07-29 21:47:04 · 286 阅读 · 0 评论 -
简单分析sizeof和strlen的区别
前言C语言中有sizeof和strlen两个函数,这两个函数都可以用来求字符数组的长度,但它们又有所区别,这里对它们的用法进行区分。分析C语言中字符串默认末尾加'\0'作为结尾; sizeof函数计算的是分配空间的实际字节数(包含'\0'),strlen计算的是字符串的字符个数(不包含'\0'); sizeof是运算符,可以以数据类型、函数做为参数。strlen是函数,只能以字符串指针做参数; sizeof是在编译时计算数据类型占空间的大小。strlen则是运行代码时计算结果,传入函数的数原创 2020-05-11 21:51:01 · 486 阅读 · 0 评论 -
循环队列与链队列的简单实现
一、循环队列a、概念为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。通过上图可以看出,如果使用顺序表作为队列的话,当处于d状态则不能继续插入新的队尾元素,否则会因为数组越界而导致程序代码被破坏。 所以产生了由链表实现的循环队列,只有...原创 2019-06-11 23:03:06 · 1180 阅读 · 0 评论 -
嵌入式操作系统使用malloc申请内存的危险
在ANSI C中,可以使用malloc()和free()这两个函数动态分配内存和释放内存,但是,在嵌入式操作系统中,调用malloc()和free()(不可重入函数)却是很危险的(由于多任务,有可能在某个任务执行接口函数的过程中阻塞,然后新任务再调用接口函数),因为多次调用这两个函数会把原来很大的一块连续内存逐渐分割成许多非常小而且彼此又不相邻的内存块,也就是内存碎片。由于这些内存碎片的大...原创 2019-06-11 23:02:39 · 3308 阅读 · 0 评论 -
C/C++的一些骚操作,持续更新......
前言在学习C/C++过程中,总会遇到很多令人眼前一亮的骚操作,这里我总结一下自己遇到过的一些写法,供大家学习。实例1、求最大公约数int gcd(int x, int y){ return y?gcd(y, x%y):x;}2、数值置换a ^= b ^= a ^= b;总结To be continue.........原创 2019-09-25 10:12:45 · 959 阅读 · 0 评论