
C/C++
文章平均质量分 75
woshizuopie
不断学习
展开
-
C语言 -- 链表(企业级,侵入式链表)
节点结构体只维护指针域,用户需预留4个字节空间,供我们帮助连接数据。原创 2022-09-04 22:54:24 · 726 阅读 · 1 评论 -
C语言 -- 动态数组&链表
将数组开辟到堆区,实现动态扩展。① 用户的数据类型无法确定;② 用户的数据无法确定创建在堆区还是栈区;③ 不管数据在堆区还是栈上,都是在内存中,就会有地址,只需维护数据的地址就行。原创 2022-09-04 21:03:24 · 1079 阅读 · 0 评论 -
C++基础知识(二十五)--- STL案例之演讲比赛
24个人,分4组,每组6人,三轮比赛,每轮淘汰一半。第三轮6人决出前三名。原创 2022-08-29 15:48:15 · 634 阅读 · 0 评论 -
C++基础知识(二十四)--- 算数生成&集合算法
集合算法注意:两个集合必须是有序序列。原创 2022-08-23 08:53:20 · 185 阅读 · 0 评论 -
C++基础知识(二十三)--- 排序&拷贝替换算法
sort(v.begin(), v.end(), 函数对象);原创 2022-08-22 23:06:05 · 158 阅读 · 0 评论 -
C++基础知识(二十二)--- 查找算法
adjacent_find(开始迭代器,结束迭代器,谓词或函数对象);binary_search(开始迭代器,结束迭代器,对象,函数对象);binary_search(开始迭代器,结束迭代器,数值);adjacent_find(开始迭代器,结束迭代器);count(开始迭代器,结束迭代器,谓词或函数对象);count(开始迭代器,结束迭代器,数值);注意:数据必须要有序。原创 2022-08-22 22:34:06 · 177 阅读 · 0 评论 -
C++基础知识(二十一) --- 遍历算法for_each&transform
算法主要由头文件 组成。原创 2022-08-21 21:53:09 · 389 阅读 · 0 评论 -
C++基础知识(二十)--- 函数对象适配器
容器通过空间配置器取得数据存储空间,空间配置器管理容器的空间。将二元函数对象转为一元函数对象。原创 2022-08-21 19:17:47 · 864 阅读 · 0 评论 -
C++基础知识(十九)--- 函数对象
STL 中有以下实现“累加”功能的算法(函数模板),该模板的功能是对(first,last)中的每个迭代器 I 执行 val = op(val, *I),返回最终的 val。原创 2022-08-21 16:14:33 · 1329 阅读 · 0 评论 -
C++基础知识(十八)--- 容器案例
当我们给容器中插入元素时,容器内部实施了拷贝动作,而不是将原数据元素放入容器,也就是说我们提供的元素必须能够被拷贝。原创 2022-08-14 10:35:51 · 222 阅读 · 0 评论 -
C++基础知识(十七)--- pair&set&map
pair 对组是一个类,类中有两个公有的成员变量。pair 将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用 pair 的两个公有属性 first 和 second 访问。原创 2022-08-13 23:08:15 · 1459 阅读 · 2 评论 -
数组指针与二维数组详解
数组名代表数组首元素的地址,这句话对一维、二维数组都适用。转载 2022-08-12 08:26:45 · 1453 阅读 · 0 评论 -
C++基础知识(十六)--- stack&queue&list
由于 list 是一个双向链表,迭代器必须能够前移、后移,所以 list 的迭代器是双向迭代器。list 容器是一个循环的双向链表。原创 2022-08-09 22:33:06 · 658 阅读 · 0 评论 -
C++基础知识(五)--- 智能指针类&字符串类
一个类如果重载了函数调用符号,那么这个类实例化出的对象也叫仿函数。原创 2022-08-08 23:05:57 · 561 阅读 · 0 评论 -
C++基础知识(十五)--- deque 容器
vector 容器是单向开口的连续内存空间,deque 则是一种双向开口的连续线性空间。所谓的双向开口,是可以在头尾两端分别做元素的插入和删除操作。原创 2022-08-03 23:30:26 · 409 阅读 · 0 评论 -
C++基础知识(十四)--- vector容器
因为vector迭代器所需要的操作行为,如:operator->,operator++,operator+=等,普通指针天生具备。Vector 以两个两个迭代器 _Myfirst 和 _Mylast 分别指向配置得来的连续空间中目前已使用的范围,并以迭代器 _Myend 指向整块连续内存空间的尾端。......原创 2022-08-03 22:25:31 · 1455 阅读 · 0 评论 -
C++基础知识(十三)--- string容器
C++标准库定义了一种string类,定义在头文件。原创 2022-08-02 23:42:01 · 339 阅读 · 0 评论 -
C++基础知识(十二)--- STL基本概念
容器各种数据结构,如vector,list等,用来存放数据,从实现角度来看,STL容器是一种模板类(classtemplate)。原创 2022-08-01 23:09:25 · 678 阅读 · 0 评论 -
C++基础知识(十一)--- 文件读写
由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,所以它在fstream头文件中是没有像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象。原创 2022-07-31 12:30:56 · 1400 阅读 · 0 评论 -
C++基础知识(十)--- I/O
在iostream头文件中定义的类有ios,istream,ostream,iostream,istream等。原创 2022-07-31 12:32:19 · 489 阅读 · 0 评论 -
C++基础知识(九)--- 类型转换 & 异常
C++的异常处理使得异常的引发和处理不必在一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。原创 2022-07-28 22:30:46 · 912 阅读 · 0 评论 -
C++基础知识(八)--- 模板
最初包含函数实现的地方,当原先的.h头文件改名为.hpp,并且其中引入了函数实现后,这里的全部屏蔽掉,即不使用该.cpp文件了)答类的成员函数默认申请为内联函数,在链接时,链接器会对重复的成员函数进行处理,只保留一份成员函数,所以不会报错。编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的时候对参数替换后的代码进行编译。不管是普通类继承类模板,还是类模板继承类模板,都必须告诉编译器父类的泛型数据类型是什么类型。函数或类是通用的,但是里面的数据类型是多种多样的。...原创 2022-07-27 08:25:08 · 615 阅读 · 0 评论 -
C++基础知识(七)--- 多态
所谓的接口,即把内部实现的细节封装起来,外部用户通过预留的接口可以使用接口的功能,而不需要知晓内部具体细节。C++中,通过类实现面向对象的编程,而在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口。不同派生类实现接口的方式也不尽相同。有继承;子类重写父类的virtual函数;函数返回值、函数名、函数参数,必须和父类中的虚函数一致。有继承;子类重新定义父类的同名成员(非virtual函数)...原创 2022-07-24 12:34:01 · 558 阅读 · 0 评论 -
C++基础知识(六)--- 继承
利用已有的数据类型来定义新的数据类型。一个B类继承于A类,或称从类A派生类B。则,类A称为基类(父类),类B称为派生类(子类)。原创 2022-07-19 08:44:05 · 413 阅读 · 0 评论 -
C++基础知识(四)---数组类、运算符重载
在调用函数时需要将实参对象完整地传递给形参,也就是建立一个实参的拷贝,系统是通过调用拷贝构造函数来实现的,这样就能保证形参具有和实参一样的值。原创 2022-07-16 10:41:25 · 1150 阅读 · 0 评论 -
C++基础知识(三)---动态对象、对象模型、静态成员、友元
作用:禁止通过构造函数进行的隐式转换。原创 2022-07-11 22:48:16 · 1409 阅读 · 0 评论 -
C++基础知识(二)---重载、类和对象、构造析构
目录一. 函数重载(1)原理:(2)当函数重载遇上默认参数 (3)函数重载的实现原理二. C++调用C语言三. 类和对象(1)封装(2)struct 和 class 的区别:(3)面向对象程序例子eg:① 比较立方体② 点和园的关系四. 构造函数、析构函数(1)默认的构造函数和析构函数(2)如果构造函数中申请了堆区空间,则就要在析构函数中释放。(3)拷贝构造函数(4)匿名对象(了解)(5)拷贝构造函数的调用时机(6)构造函数的调用规则(7)深浅拷贝(8)多个对象的构造函数和析构函数8.1 类对象作为成员8.原创 2022-07-10 11:54:33 · 327 阅读 · 0 评论 -
C++基础知识(一)
命名空间 ::namespace A{ //A 是空间的名字 int a; void func() {}}(1)命名空间只能写在全局;(2)可以嵌套;namespace Aspace { int a = 1; namespace B { int b; }}(3)命名空间是开放的,可以随时加入新成员;(4)命名空间可以取别名;namespace newSpace = oldSpa...........原创 2022-07-04 22:06:22 · 446 阅读 · 0 评论 -
sizeof、strlen
int main(void){ char str1[] = {'1','2','0','3',0,0}; char str2[] = { '1','2','\0','3',0,0 }; char str3[] = "120300"; printf("sizeof(str1) = %d, strlen(str1) = %d\n", sizeof(str1), strlen(str1)); printf("sizeof(str2) = %d, strlen(str2).原创 2022-04-10 18:18:37 · 101 阅读 · 0 评论 -
嵌入式C语言基础知识 -- 函数指针&回调函数&结构体指针
目录一. 函数指针:什么是函数指针?函数指针的三种定义方式:(1)先定义出函数的类型,再通过类型定义函数指针变量(2)先定义出函数指针的类型,再通过指针类型定义函数指针变量(3)重点:直接定义函数指针变量函数指针和指针函数的区别:二. 回调函数实例一:实例二:实例一的具体实现。实例三:固件开发中使用到的一个回调函数实例。三. 结构体指针示例1:结构体指针的使用示例2:指向结构体变量的指针 &结构体嵌套示例3:结构体数组指针的使用示例...原创 2022-02-08 03:11:18 · 2502 阅读 · 0 评论 -
C语言 -- 指针基础 -- 参考翁恺C语言程序设计
参考.目录指针是一个变量,其值为另一个变量的地址。指针的运算符:&和*指针应用场景一、交换两个变量的值二a、函数返回多个值二b、指针运算(可以先略)数组变量是特殊的指针指针数组函数指针回调函数动态内存分配重点关注:(1)malloc动态申请内存空间时,返回的值是void*类型,需要强制转换为自己需要的类型。(2)回调函数。每一个变量都有一个内存位置,每一个内存位置都定义了可使用“&”运算符访问的地址。#include<stdio.h>int main(){原创 2020-07-21 19:17:24 · 294 阅读 · 0 评论 -
C语言 -- 字符串 -- 参考翁恺C语言程序设计
怎样定义一个C语言的字符串?比如:char word[]={'H','e','l','l','o','!','\0'};这个数组总共有7个单元,最后一个单元放的是 0,因为这个0使得这个word成为了C语言的一个字符串。对于C语言来说,字符串是以0(整数0)结尾的一串字符(0或’\0’是一样的,但是和’0’不同)。0标志字符串的结束,但它不是字符串的一部分。两个相邻的字符串常量会被自动连接起来。字符串以数组的形式存在,以数组或指针的形式访问,更多是以指针的形式访问。string.h 里有很原创 2020-08-05 15:09:06 · 235 阅读 · 0 评论 -
C语言 -- 结构体&枚举&共用体
C 结构体和本地变量一样,在函数内部声明的结构类型只能在函数内部使用,所以通常在函数外部声明结构类型。结构类型和结构变量是两回事,在声明了结构类型后,可以用这种类型定义很多种变量。声明结构体的形式: ### 1. ###//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度浮点型的c//同时又声明了结构体变量s1//这个结构体并没有标明其标签struct { int a; char b; double c;} s1; ### 2. ###原创 2020-08-07 14:56:51 · 529 阅读 · 0 评论 -
C语言 -- 数组 -- 参考翁恺C语言程序设计
目录声明数组:初始化数组:几个数组的例子:1.计算平均数并挑出比平均数大的数字2.统计输入数字出现的次数,输入-1结束3.找出数字在数组中的位置二维数组:初始化二维数组:访问二维数组的元素:例题(1)a[ 1>2 ] [ !1](2)int a[ ][3] = {{0}, {1}, {2}};则,a[1][2] = ?(3)p[-2]是多少?声明数组:在C中要声明一个数组,需要指定元素的类型和元素的数量,如下:double balance[10]; //声明了一个类型为double的包含10个原创 2020-07-17 14:37:37 · 463 阅读 · 0 评论 -
C语言 -- for循环/函数/变量/数据类型/运算符
目录1. for循环2. 全局变量和局部/本地变量:静态本地变量3.函数3.1 有返回值的函数:3.2 没有返回值的函数:3.3函数参数形参和实参:(1)传值:(2)传指针:4. 数据类型选择整数类型浮点的输入输出运算符运算符优先级:1. for循环for语句的一般形式:for(循环变量赋初值;循环条件;循环变量增值){}例如:for(s=2;s<=10;s++){ }表达式1 表达式2 表达式3 都可以省略。...原创 2022-01-04 18:32:45 · 6583 阅读 · 0 评论 -
嵌入式C语言基础知识查漏补缺 -- 链表
单链表:结构体变量通过结构体指针连接在一起。 /*链表的结构体*/#include <stdio.h>typedef struct Node{ int data; //数据域,可以是任何类型的数据 struct Node* next; //指针域}Node, *LinkedList;其中,Node表示结点的类型,LinkedList表示指向Node结点类型的指针类型。分类:静态链表.原创 2022-01-02 00:13:09 · 553 阅读 · 0 评论 -
嵌入式C语言基础知识查漏补缺 -- 复合类型&内存&等等
1.生成随机数srand():在调用rand()函数之前使用,是一个设置随机数种子的函数。rand():产生随机数的函数。time():time(NULL)这个函数的返回值是作为srand()函数的参数的。意思是以现在的系统时间作为随机数的种子来产生随机数。参数为NULL,用来获取系统时间。int main(){ unsigned long n; srand((unsigned)time(NULL)); for (int i = 0; i < 10; ...原创 2021-12-30 20:18:16 · 874 阅读 · 0 评论 -
嵌入式C语言基础知识查漏补缺--内存管理&函数&指针&数组
内存管理: 局部变量 静态局部变量 全局变量 静态全局变量 作用域 在定义变量的{}之内有效 在定义变量的{}之内有效 整个工程,所有文件 当前文件 生命周期 程序运行至变量定义处开辟空间,所在的函数结束之后释放空间 执行main函数之前就已经开辟空间,程序结束之后才释放空间 执行main函数之前就已经开辟空间,程序结束之后才释放空间 执行main函数之前就已经开辟空间,程序结束之后才释放空间 未初始化的值 随..原创 2021-12-27 21:19:42 · 1261 阅读 · 0 评论 -
C语言实例&网上参考的笔试题(部分)
第9、10题需要再看。1.输出九九乘法口诀表#include<stdio.h>int main(){ int i = 0; //外层循环变量,控制行 int j = 0; //内层循环变量,控制列 for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%d*%d=%d\t",j,i,i*j); } printf("\n原创 2021-12-25 13:00:27 · 934 阅读 · 0 评论 -
C语言 -- define/typedef/switch
自定义数据类型(typedef)C语言提供了一个叫做typedef的功能来声明一个已有数据类型的新名字。eg:typedef int Length;Length a,b,len; // =int a,b,len;Length number[10]; // =int number[10];上例使得Length成为int的别名,这样Length就可以替代int出现在变量定义和参数声明的地方。又eg:typedef long int64_t;typedef原创 2021-12-25 12:58:27 · 722 阅读 · 0 评论