暂时未有相关云产品技术能力~
暂无个人介绍
🏡概念 🏡链表结构体的定义 🏡链表为空的判断 🏡链表节点的创建 🏡链表的初始化 🏡链表的打印 🏡链表的尾插 🏡链表的头插 🏡链表的尾删 🏡链表的头删 🏡链表的查找 🏡链表中在pos之前插入 🏡删除pos的值 🏡链表的销毁 🏡链表为什么使用的是一级指针 🌸(1)单链表(非头单向不循环连链表)使用二级指针 🌸(2)带头双向循环连链表使用一级指针 🏡狡猾的面试官 🏡链表的源码 🌸main函数 🌸test.h文件 🌸test.c文件
🐰string类 🏡string类的简介 🏡C++11字符串的初始化 🏡string类型中的赋值、拼接和附加 🏡string的其他操作 🏡string类I/O
new和delete
🐰C++空指针NULL和nullptr 🏡空指针
🐰C++格式输入输出 🏡用流对象的成员函数控制输入输出格式 🌸1.控制格式的标志位 🌸2.使用成员函数设置标志字 🌸3.使用成员函数设置域宽、填充字节、精度 🏡用控制符控制输入输出格式
环形链表 环形链表 II
链表分割 链表的回文结构 相交链表
移除链表元素 反转链表 合并两个有序链表 总结
🐰单链表 🏡单链表的定义 🏡单链表的打印 🏡单链表的创建节点 🏡单链表的头插 🏡单链表的尾插 🏡单链表的尾删 🏡单链表的头删 🏡单链表的查找 🏡单链表的改动 🏡单链表的元素个数 🏡单链表的任意位置插入元素 单链表的任意位置删除元素 🏡单链表的销毁 🏡单链表中的源码 🌸main文件 🌸头文件test.h 🌸test.c文件
🐰文件操作与文件流 🏡文件流类和文件流对象 🏡文件的打开与关闭 🌸1.文件的打开 🌸2.文件的关闭 🏡对文本文件的操作 🏡对二进制文件的操作 🌸1.用成员函数write和read操作二进制文件 🌸2.随机访问二进制文件
🐰 C++的输入输出 🌸C++的输入输出 🌸C++的输入输出流 🏡iostream类库中有关的类 🌸用流成员函数put输出一个字符 🌸用流成员函数write输出字符串 🌸用流成员函数get获取一个字符 🏡1.无参数的get 🏡3.有三个参数的get函数 🌸用流成员函数getline读取字符串 🌸用流成员函数read读取字符串
🐰类模版 🌸类模版的声明 🌸类模版的实例化 🌸类模版参数 🌸默认模版实参
🐰转换构造函数 🐰类型转换函数
🐰宏的缺点 🐰用宏实现动态开辟的技巧 🐰命名约定 🐰#undef 🐰条件编译 🌸#ifdef 🌸#ifndef 🌸#if defined(symbol) 🌸#if !defined(symbol) 🐰常见的条件编译指令 🌸#if 🌸多分支的条件编译 🐰文件包含 🐰atoi 🐰offsetof 🐰模拟实现offsetof 🐰有关宏的习题 🌸写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
🐰插入运算符">>"和提取运算符"<<"的重载 🌸(1)要对"<<"和">>"运算符进行重载,必须重载为类的友元函数 🌸(2)重载的友元函数的返回类型应该是ostream对象或者istream对象的引用,即ostream&或istream& 🌸利用"<<",">>"以及"+","-"的重载实现,时差的计算
🐰 运算符的重载 🌸实现对象之间的运算 🌸重载运算符的规则
🐰文件操作 🌸 fwrite 🌸fread 🌸fseek 🌸fteel 🌸rwind 🌸文本文件和二进制文件 🌸文件结束的判定 🌸文件缓冲区 🌸 实现拷贝一个文件
🐰文件操作 🌸打开文件 🏡文件的顺序读写 🌸fputc字符输入函数(适合所有输入流) 🌸fgetc(适合所有的输出流) 🌸fputs(适合所有的输入流) 🌸fgets(适合所有的输出流) 🏡格式化的读写 🌸fprintf(适合所有的输入流) 🌸fscanf读取文件(适合所有的输出流) 🏡流 🌸屏幕这个流(stdout)输出 🏡对比:printf/fprintf/sprintf和scanf/fscanf/sscanf 🌸sprintf(把格式化数据转换成字符串) 🌸sscanf(把字符串转换成相应格式化数据)
🐰虚基类 🌸虚基类的声明 🌸虚基类的初始化 🌸总结
🐰多重继承 🌸声明多重继承的方法 🌸多重继承派生类的构造函数与析构函数 🌸多重继承引起的二义性
🐰内存分布 🐰realloc 🐰柔性数组(柔性数组又名0长度数组)
🐰 基类与派生类对象的关系 🐰派生类的构造函数
🌸通讯录的需求 通讯录的功能 🐰 通讯录的原码 🌸主函数 🌸头文件 🌸函数实现文件
🐰继承和派生的概念 🐰派生类的声明 🐰派生类的构成 🌸1.从基类接受成员 🌸2.调整从基类接受的成员 🌸3.增加新成员 🐰派生类中基类成员的访问属性 🌸公用继承: 🌸私有继承: 🌸受保护的继承: 🐰总结
🐰对象的动态创建和销毁 🐰对象的复制 🐰对象的赋值
🐰strtok 🐰strerror 🐰memcpy 🐰模拟实现memcpy 🐰memmove 🐰模拟实现memmove 🐰memcmp 🐰memset
🐰对象与const 🏡常对象 🏡常对象成员 🌸常数据成员 🌸常成员函数 🏡指向对象的常指针 🏡指向常对象的指针(常量指针) 🏡对象的常引用
🐰strlen 🐰模拟strlen 🐰strcpy 🐰模拟strcpy 🐰strcat 🐰模拟strcat 🐰strcmp 🐰模拟strcmp 🐰strncpy 🐰strncat 🐰strncmp 🐰strstr 🐰模拟strstr
🐰this 指针 🌸this指针的定义 🌸this指针的应用 🌸this指针的注意事项:
🐰析构函数 🌸析构函数的定义 🌸析构函数的应用: 🐰对象数组 🐰指向对象的指针 🌸对象指针的概念: 🌸定义对象指针: 🌸指向对象的数据成员的指针 🌸指向对象的成员函数的指针
🐰类与对象 🌸类和对象的关系: 🌸类的声明和对象的定义 🏡类的声明: 🏡对象的定义 🐰类的成员函数 🐰对象成员的访问 🐰构造函数和析构函数 🌸构造函数: 🏡构造函数的概念: 🏡构造函数的特性: 🏡构造函数的初始化列表
「题解」日常遇到指针面试题
🐰inline 函数 🐰string类 🌸1.字符串的定义: 🌸2.访问字符串 🌸3.字符串的连接 🌸4.字符串的比较 🌸5.字符串长度的计算 🌸6.字符串的交换 🌸7.字符串数组 🐰static_cast强制类型转化
题目:BC134 蛇形矩阵 难度:中等 描述: 给你一个整数n,输出n∗n的蛇形矩阵。 输入描述: 输入一行,包含一个整数n 输出描述: 输出n行,每行包含n个正整数,通过空格分隔。 1<=n<=1000 示例1
题目:BC156 牛牛的数组匹配 描述: 牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近,输出起始点最靠左的数组。 输入描述: 第一行输入两个正整数 n 和 m ,表示数组 a 和 b 的长度。 第二第三行输入 n 个和 m 个正整数,表示数组中 a 和 b 的值。 输出描述: 输出子数组之和最接近 a 的子数组 示例1 输入:
题目:BC139矩阵交换 难度:中等 输入描述: 第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。 提示:当t为别的字符时不需要处理
🐰浮点型在内存的存储 🤔提示:数据类型的存储范围 🌸浮点型的类型: ✈️引入: 🐰浮点型数据存储的规则 🌸有效位数字M的规定 🌸10进制的小数转换成2进制的小数 🌸指数E的规定 🌸引入的解读
🐰数据类型的介绍 🐰类型的意义 🐰数据类型的基本归类 🌸整形家族: 🌸浮点型家族: 🌸构造类型: 🐰整形在内存中的存储 🐰大小端 🐰关于有无符号字符类型和整形提升的经典题型
行列式是一个数,是一个结果 三阶行列式的计算:主对角线的乘积 全排列与对换 逆序数为奇就为奇排列,逆序数为偶就为偶排列 对换: 定理一:一个排列的任意两个元素对换,排列改变奇偶性(和行列式的行(列)交换,符号要变化) 行列式的定义: 上下三角行列式和对角行列式:它的值就是主对角线的乘积
🐰引用和指针的区别 🌸从现象上看 🌸从编译上看 🤔提示
🐰算数操作符:+ - * / % 🐰移位操作符:<< >> 🌸进制的定义 🌸整数二进制表示形式 🌸<< 左移操作符 🌸>>右移操作符 🐰位操作符:& | ^ 🌸&(按位与)|(按位或) 🌸^(按位异或) 🐰赋值操作符: =
🐰基本数据类型和内存映像 🏡前言 🌸基本数据类型 ✈️void类型 🤔提示 🐰类型转换 🏡前言 🌸隐式转换 ✈️定义 ✈️基本数据类型的兼容关系 🤔提示 🌸强制类型转换 ✈️引入 🤔提示
🐰结构 🌸数据类型的定义 🌸关键字struct 与 class 的困惑 🌸使用struct 🐰位域(位段) 🐰成员对齐 🌸结构内存大小的计算 🐰联合(Union) 🌸联合内存大小的计算 🐰枚举(enum) 🌸枚举类型的大小
题目要求 1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 4、每个单词最长20个字母;
任何数组,不论是静态声明的还是动态创建的,其所有元素在内存中都是连续的字节存放的,也就是说保存在一大块连续的内存中。
首先,指针是变量,它和我们平常使用的整型变量、字符变量、浮点变量等各种变量并没有本质的差异,不同的只是它们的类型和值的含义,即解释方式。在二进制层面,指针的值就是内存单元的地址,而变量又是引用内存单元的值的别名,因此在语言层面指针的值就是变量的地址
首先我们得了解扫雷的规则,扫雷的规则我们随便点一个格子,方格即被打开并显示出方格中的数字,方格中数字则表示其周围的8个方格隐藏了几颗雷,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地则会输掉游戏,重新开始,所以扫雷也有一定的运气成分。
这个三字棋看似生活不起眼的小游戏,但是对于像我一样才开始接触C的人来说,实现起来也不是那样轻而易举。实现三字棋的过程,让我明白掌握代码并非最重要的,最重要的是,理清实现功能的逻辑,例如:实现这个游戏时,首先得了解游戏规则,其次需要一个棋盘......只要自己逻辑清晰,写代码也是水到渠成,还有一点,只要自己掌握逻辑,下次想再次实现这个功能或着分析已写的代码就不会犯怵了。最后我们要多善于整理总结,下次我们遇到类似的问题,就可以触类旁通了。
strerror函数用于调用库函数失败时,翻译错误信息,引用头文件#include<string.h>
str1和str2字符串中一定要有'\0',不然不能正确从字符串查到子串