C/C++
C/C++ 笔记记录
JavonPeng
提得起,放得下,提放自如,方是自在人
展开
-
【C语言】从字符串中提取多位数字
#include <stdio.h>#include <stdbool.h>/** * @brief 字符串中提取多位数字 * @param in: 待提取的字符串 * @param out: 提取到的数字 * @param outLen: 要提取提取数字位数 * @return true: 提取成功 * false:提取失败(IP地址不存在或不合法) * @author PJW * @date 2021/07/24 */bool NUMBER_原创 2021-07-25 20:49:18 · 1632 阅读 · 0 评论 -
【C++】STL概念及快速入门
STL 是 C++ 标准库的一部分。 STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。 C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,包含了诸多常用的基本数据结构和基本算法,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。 STL有六大组件,但主要包.原创 2021-03-14 22:28:28 · 419 阅读 · 0 评论 -
【c语言】数组转换成字符串,并按16进制格式打印
数组无法直接使用 printf 打印,一般会使用 for 循环逐个字节打印出来。而我使用 ESP_LOG时,因为该日志打印系统自带了换行,打印出来的效果是每行一个字节,跟需求效果不同,所以这里采用一种把数组转换成字符串再打印的方法。#include <stdio.h>#include <string.h>#include <malloc.h>#define IntToASCII(c) (c)>9?((c)+0x37):((c)+0x30);/**.原创 2021-07-15 16:56:57 · 3927 阅读 · 1 评论 -
【C语言】从字符串中提取IP地址最简洁的方法
#include <stdio.h>#include <string.h>#include <stdbool.h>/** * @brief IPv4地址提取 * * @param str: 待提取的字符串 * @param len: 待提取的字符串长度 * @param out_ip: 提取到的 IPv4 地址 * * @author PJW */bool IPv4_GET(char *str,int len,char *out_ip) {原创 2021-07-01 14:53:21 · 4313 阅读 · 1 评论 -
【C语言】判断字符串是否为IP地址(IPv4地址是否合法)
#include <stdio.h>#include <string.h>void IPv4_verify(char *ip) { int a,b,c,d; char t; if (4 == sscanf(ip,"%d.%d.%d.%d%c",&a,&b,&c,&d,&t)) { if (0<=a && a<=255 && 0<=原创 2021-06-26 11:46:17 · 3812 阅读 · 1 评论 -
C语言基础与进阶书单(持续更新中...)
C Primer Plus(第6版)基础实用C语言编程进阶C语言接口与实现:创建可重用软件的技术C和指针C陷阱与缺陷C专家编程深入理解C指针算法精解:C语言描述C语言核心技术设计模式编程规范编写高质量代码:改善C程序代码的125个建议嵌入式C/C++嵌入式系统编程...原创 2021-04-27 22:04:11 · 382 阅读 · 0 评论 -
【问题解决】warning: ordered comparison of pointer with integer zero [-Wextra]
问题:struct menu_type{ const unsigned char *icon; ...};static struct menu_type menu_list[] ={ ...};while( menu_list[i].icon > 0 )报警告:warning: ordered comparison of pointer with integer zero [-Wextra] while( menu_list[i].icon > 0 )原创 2021-07-27 15:16:12 · 3356 阅读 · 0 评论 -
报错:warning: #1166-D: returning pointer to local variable
uint8_t *RTC_Get(void){ uint8_t time[6]={0}; ..... return time;}当函数退出时,局部变量会被销毁,会造成程序异常。所以不能返回局部变量,需要定义成静态变量。原创 2020-08-18 15:54:03 · 1932 阅读 · 0 评论 -
C语言中中bool类型报错解决
1、添加#include <stdbool.h> 头文件2、另一种方式,可以添加以下枚举类型解决:typedef enum {FALSE = 0, TRUE = !FALSE} bool;但是有时候已经定义了TRUE ,所以可能报错。原创 2020-07-31 18:14:33 · 6468 阅读 · 0 评论 -
C语言设计模式--简单工厂模式
一 模式动机先来看这样一个需求:这天,你的老大跟你说:"小李,公司的物料不够用了,你去嘉立创商城买一些 0805 电容回来,然后去捷多邦买点 0603 电容回来"。"好的",于是你回到工位上准备开始干活。试想一下,如果这个场景用程序来实现,应该怎么写?从 C 语言传统的面向过程来看,应该这样写:#include <stdio.h>void login_website(char *str);void enter_jlc();void bug_jlc_capacity(char转载 2020-06-23 08:38:20 · 287 阅读 · 0 评论 -
结构体与函数应用
一、函数返回结构体#include<stdio.h>struct xyz{ int x; long y; double z;}; struct xyz xyz_of(int x, long y, double z){ struct xyz temp; temp.x = x; temp.y = y; temp.z = z; return temp;} int main(void){ struct xyz s = {0,0,0}; s = xyz_of(1原创 2020-06-10 15:26:29 · 667 阅读 · 0 评论 -
C/C++ 中 volatile 关键字详解
1、为什么用volatile?C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the lan转载 2020-05-27 15:45:56 · 723 阅读 · 0 评论 -
C语言中#undef的用法
C语言中#undef的语法定义是:#undef 标识符,用来将前面定义的宏标识符取消定义。然而,在实际应用中,#undef到底可以用来做什么?整理了如下几种#undef的常见用法。1. 防止宏定义冲突在一个程序块中用完宏定义后,为防止后面标识符冲突需要取消其宏定义。例如:#include <stdio.h>int main(){#define MAX ...转载 2020-04-23 10:19:59 · 12501 阅读 · 0 评论 -
单片机开发之节省内存大法(C语言版本)
首先聊一聊 大家都知道进行单片机编程和计算机编程有个最大的差别就是单片机的资源非常的有限,并且对于大部分低端单片机而言都没有操作系统。除了一些嵌入式级的芯片用了Linux系统外,其他大部分操作都是比较简单的RTOS,可能还有一些简单的应用或者芯片根本不用系统,直接是裸机程序。 不过大部分单片机编程都与硬件密切的结合,这样工程师能够对当前的项目对象有更多的把控能力和理解能力。但是由于...转载 2020-04-14 09:24:16 · 2973 阅读 · 4 评论 -
| 和 ||,& 和 && 的区别
我们将||和&&定义为逻辑运算符,而|和&定义为位运算符。&&如果两个操作数都非零,则条件为真;||如果两个操作数中有任意一个非零,则条件为真。&按位与操作,按二进制位进行"与"运算。运算规则:(有 0 则为 0)0&0=0; 0&1=0; 1&0=0; 1&am...转载 2020-01-03 11:30:16 · 870 阅读 · 0 评论 -
结构体字节对齐详解
问大家一个问题: struct STUDENT{char a;int b;}data; 如上结构体变量 data 占多少字节?char 占 1 字节,int 占 4 字节,所以总共占 5 字节吗?我们写一个程序验证一下: # include <stdio.h>struct STUDENT{char a;int b;}data;int main(vo...转载 2019-08-17 10:34:31 · 292 阅读 · 0 评论 -
冒泡排序:时间复杂度与空间复杂度
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。算法分析冒泡排序算法是所有排序算法中最简单的(前面也提到过),在生活中应...转载 2019-08-10 14:14:11 · 49386 阅读 · 5 评论 -
时间复杂度的计算
一、算法复杂度是在《数据结构》这门课程的第一章里出现的,因为它稍微涉及到一些数学问题,所以很多同学感觉很难,加上这个概念也不是那么具体,更让许多同学复习起来无从下手,下面我们就这个问题给各位考生进行分析。首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。当我们...转载 2019-08-10 14:10:46 · 521 阅读 · 0 评论