![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
CoolSuperman
点滴积累,成就不凡
展开
-
C:简单指针【指针类型,指针运算,二级指针,指针数组】
指针指针是什么?在计算机科学中,指针是编程语言的一个对象,它的值直接指向存在电脑存储器中另一个地方的值,因为地址能找到所需的变量单元,可以说地址指向变量单元,所以叫做‘指针’,形象些来说,就好像你想要拜访你的朋友张三,不管是你给他东西(赋值),还是你从他那里取东西(取值);又或者要干些其他的事,你都得先得找到他才行,而指针就好像一张标记着张三位置的地图,有了它你就可以立刻准确的找到张三。...原创 2019-02-14 21:27:34 · 349 阅读 · 0 评论 -
C:总结(思维导图版)
半天时间,我整理了一下所熟悉的C语言知识,做成一张思维导图,因为时间仓促,水平有限,当然有遗漏和错误的地方,敬请大家指出:ps:原文件可以在我的博客下载列表里下载o( ̄▽ ̄)ブ;...原创 2019-03-10 22:09:35 · 580 阅读 · 0 评论 -
C:电话簿(动态增长+本地存储)
因为之前版本的电话簿简易电话簿(大小固定)是设定好容量的,如果联系人满了,就不得不删除旧的添加新的,所以这次的电话簿采用了动态增长的方式,可以在添加联系人的时候检测是否已经满了,如果满了再扩增一定的空间,并且还可以将这些信息保存在本地文档中每次运行时进行读写;在整体结构上并没有太大改动,只是增加了三个函数以及改变了结构体内存的开辟方式1.CheckFull()这个函数是每次添加联系人时,...原创 2019-03-07 23:50:11 · 613 阅读 · 0 评论 -
C++:引用详解
文章目录引用const引用引用做参数/返回值引用与指针的区别引用类型后紧跟&->int& b = c;引用是给一个已存在变量取别名,操作的还是原变量空间里的数据;使用规则:引用定义时必须初始化;一旦引用一个实体,就不能再引用其他实体;一个实体可以进行多个引用;#include<iostream>using namespace std;...原创 2019-03-24 20:52:15 · 131 阅读 · 0 评论 -
C++:命名空间/缺省参数/内联函数/auto/范围for
文章目录命名空间缺省参数内联函数特性宏的优缺点auto关键字范围for命名空间::-作用域限定符+变量/函数:::a,在全局域中寻找a变量;namespace一个命名空间就定义了一个新的作用域,命名空间中所有内容都局限与该命名空间中;#include <iostream>int a =0;namespace my{//也在全局变量里 int a =0;...原创 2019-03-25 13:44:53 · 232 阅读 · 0 评论 -
C++:函数的重载
函数的重载是函数的一种特殊情况,c++允许在同一作用域中声明几个功能类似的同名函数,这些同命函数的形参列表(参数个数,类型,顺序)有一不同即可,常用来处理实现功能类似数据包类型不同的问题;When two or more different declarations are specified for a single name in the same scope, that name...原创 2019-03-22 18:16:46 · 231 阅读 · 0 评论 -
C++:导图-类与对象
根据所掌握的知识点,我制作了一张关于C++类和对象的思维导图,这是对C++:类和对象的部分总结概括,如果你想看到更多细节,请点击上方蓝色的博文链接:...原创 2019-03-29 19:57:57 · 603 阅读 · 0 评论 -
C++:类和对象
文章目录什么是类封装/访问限定符如何在类外访问一个私有的成员变量?class与struct的区别是什么?类的实例化为什莫要进行内存对齐?类的6个默认成员函数构造函数析构函数拷贝构造函数运算符重载赋值运算符重载什么是类脱胎于C的struct,但在C++中,struct不但可以定义数据以描述类的属性/成员变量,还可以再类里定义函数,用以描述类的方法(成员函数),常使用使用class替换作为关键字...原创 2019-03-26 18:06:00 · 681 阅读 · 0 评论 -
C++:模板
文章目录函数模板格式函数模板的实例化函数模板匹配原则类模板格式了解STL库泛型编程:编写与类型无关的通用代码,是服用代码的一种手段,模板是泛型编程的基础函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定版本。格式template<typename T1,typename T2,…typename Tn>返回值类型 函...原创 2019-04-04 15:15:50 · 125 阅读 · 0 评论 -
C\C++:内存管理
文章目录C/C++内存分布C内存管理-malloc/freeC++内存管理方式-new/deleteoperator new&operator delete如何自行实现new定位表达式与malloc/free区别:C/C++内存分布栈:又叫堆栈,非静态局部变量/参数函数/返回值等等,堆时可以上下增长的内存映射段:是高效I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接...原创 2019-03-31 19:22:50 · 131 阅读 · 0 评论 -
C++:类的应用-构建一个简单的Date类
在初步认识了类的构造方法,尤其是六大默认成员函数以及重载运算符后,我们就可以利用这些特性,来DIY一个自己的类,我的选择是构建一个可以进行日期方面运算/判断的类:需要实现的功能:赋值运算(=);加减天数还有前/后置++和–;计算出两个日期之间相差了多少天判断两个日期的大小(>,==,<);额外关系运算(>=,<=);因为Date是一个自定义类型,所有上述的所...原创 2019-03-27 21:28:18 · 422 阅读 · 0 评论 -
C++:单例模式-饿汉/懒汉
单例模式:一个类只能创建一个对象,即单例模式,该模式可以保证系统中只有一个实例,并提供一个访问它的安全局访问点,该实例被所有程序模块共享。用于管理服务器配置;构造函数私有化/防拷贝构造函数私有化/与防拷贝是实现懒汉饿汉的必要手段,如果你已经了然于心,请直接跳到下一部分:**构造函数私有化:**将类的构造函数私有,拷贝构造声明私有。防止别人拷贝在栈上生成对象。**防拷贝:**考虑也得...原创 2019-04-03 18:24:43 · 296 阅读 · 1 评论 -
C++:青蛙的地下迷宫
今天看到了一个很有意思的题目:小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷宫中...原创 2019-04-26 23:45:05 · 444 阅读 · 0 评论 -
C/C++:static与extern
C语言中static:修饰局部变量:局部变量原本存放于栈区,但经过static修饰后就被存放在静态区,这延长局部变量的生命周期至程序结束,但作用域仍限于语句块内修饰全局变量:原本全局变量/函数是全局作用域的,但经过static修饰后便无法被同一工程的其他源文件所使用,作用域限于本文件内修饰函数:与修饰全局变量相同,作用域缩小至本文件;extern:修饰函数/变量:声明在该工程中的...原创 2019-05-03 19:44:25 · 155 阅读 · 0 评论 -
C++:继承概念基础
概念及定义继承对象是面向对象程序设计时代码可复用的重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,以此产生的新类叫作派生/子类,继承体现了面向对象程序设计的层析结构,是类设计层次的复用继承的方式共有三种继承的方式会决定基类成员在子类中的访问方式继承方式/类成员基类的public成员基类的protected成员基类的private成员public...原创 2019-07-22 17:13:50 · 264 阅读 · 0 评论 -
C:程序的编译(预处理操作)+链接浅析
文章目录程序的编译(预处理操作)+链接编译环境与运行环境程序编译过程预处理编译 (最复杂)汇编链接预定义符号宏与函数对比#&amp;##(不建议使用,认识就行)#undef去掉宏#ifndef ... #endif &amp; #pragma once&lt;&gt;与""的区别程序的编译(预处理操作)+链接编译环境与运行环境int arr[10] = {0};printf("原创 2019-03-09 12:26:53 · 136 阅读 · 0 评论 -
C:动态内存分配及系列函数浅析
文章目录动态内存分配**malloc&free****calloc****realloc****常见动态内的错误**Lenix下内存空间布局什么是内存泄漏tips:动态内存分配malloc&freevoid* malloc(size_t size)开辟失败返回一个NULL指针,所以malloc返回值需要进行检查;如果参数size为0,malloc的行为是未定义的,取决...原创 2019-03-03 19:12:03 · 318 阅读 · 0 评论 -
C:简易电话簿(大小固定)
功能增加联系人删除联系人修改联系人查找联系人打印全部联系人按姓名排序清空所有联系人注意使用结构体表示信息,姓名存放与编码方式有关可以strlen一下汉字字符串查看使用结构体存电话本;六度空间理论;表示有多少个元素是有效的;更多注意看代码注释头文件#ifndef __CONTACT_H__#define __CONTACT_H__#include&lt;st...原创 2019-03-03 19:02:03 · 786 阅读 · 0 评论 -
C:操作符小结
操作符就像C语言的骨骼,将数据联系在一起,得以完成工作,今天我们就来分门别类地总结一下:1.算数操作符+ - * / %加法,减法,乘法,与数学中的形式和运算方法没有区别,这里只提一下除法运算符和取余操作符:1.余运算符%两边必须为整数,返回整除之后的余数,而其余操作符都可以进行整书/浮点书运算2.任意一端出现浮点数,返回结果便为浮点数;当都为整数时,返回是整...原创 2019-02-16 13:49:23 · 198 阅读 · 0 评论 -
宏与函数哪家强?
说到宏与函数,我们首先来了解一下它们的定义:#define定义宏#define包括一个规定,即允许把某一特定输入根据预定义的规则进行输出,宏即是一种规则与模式,也可以称为语法替换。函数在计算机中,函数是一个固定的程序段,也可以成为一个子程序,拥有自己特定的功能,在被调用时将传入的参数进行运算,再返回值给调用它的程序。在某种意义上,宏与函数都具有将输入给自己的值按照预定义的规则进行...原创 2019-02-12 20:21:04 · 239 阅读 · 0 评论 -
C:模拟实现:strcat,strstr,strchr,strcmp
1.Stractstrcat函数的功能是将源字符串加在在目标字符串的末尾,构成新的字符串,构建这个函数的思路是,先检测到目标字符串的末尾’\0’从这个位置开始把源字符串逐个拷贝到目标字符串上,最后别忘了加上’\0’:具体实现:char* my_strcat(char*dest, const char*src)//目标空间必须足够,目标和源必须都不为Null{ char*ret = ...原创 2019-02-22 19:07:12 · 144 阅读 · 0 评论 -
C:模拟实现Memcpy与Memove函数
MemcpyMemcpy函数的功能是拷贝任意类型的数据到目标内存空间中,因为无法得知目标数据的类型,所以我们使用void*类型的指针来保存,拷贝数据的地址和目标空间的地址,将这些数据逐字节拷贝就行了;void* my_memcpy(void*dest,const void*src,unsigned int byte){ assert(dest&&src); void*re...原创 2019-02-22 19:11:22 · 189 阅读 · 0 评论 -
C:模拟实现strncpy,strncat,strncmp
StrncpyStrncpy的函数功能与Strcpy相似,都是实现字符串的拷贝,但Strncpy可以指定拷贝的个数,这里有一点需要注意,如果指定的拷贝个数大于拷贝源的元素个数,那麽strncpy就会自动补\0,和Strcpy实现思路的不同也就在这里:char* my_strcnpy(char*dest ,const char*src,unsigned int num)//注意:num大于src...原创 2019-02-22 21:35:58 · 203 阅读 · 0 评论 -
C:从三子棋到n子棋
d'd原创 2019-02-12 18:29:50 · 492 阅读 · 0 评论 -
C:模拟实现strlen与strcpy
在日常的编程学习中,strlen与strcpy一直是我们使用比较频繁的两个函数,今天我们就通过模拟实现这两个函数,来加深对于这两个函数的理解首先我们来看一看这两个函数实现所需要具备的功能:一、strlen()是C标准库中的字符串函数,要在运行时才能计算。参数必须是字符型指针(char*), 且必须是以’\0’结尾的。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机...原创 2019-02-12 20:35:06 · 183 阅读 · 0 评论 -
C:编程解决五人比赛名次,寻找凶手问题
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛名次。我们来分析一下:假设比赛没有重名,每位选手都有不同的名次,我们可以据此使用循环将每一种可能都遍历出来,根据题目上所说的每位球员都说对了一半,我们将他们的话都可以转化为判...原创 2019-02-18 22:27:17 · 564 阅读 · 0 评论 -
C:数组以及数组相关的简单运算
1、数组的创建:形如int arr [10] 即为一个数组可表示为数组元素类型+数组名+[常量或常量表达式]该数组类型为 int [10]。数组名即为一个指针,此概念会在下文详细讲解。2、数组的初始化:创建数组时应养成将其第一时间初始化的习惯,否则新建的数组里均为随机值;一维数组初始化当创建一维数组时,若不进行初始化,则一定要指定数组大小ex: int arr [10];...原创 2019-02-18 22:56:59 · 785 阅读 · 0 评论 -
C:小游戏扫雷
今天我们来看看扫雷这个游戏如何用C实现:思路挺容易,想要写的功能齐全还真有些费劲X_X||,不过这个游戏做起来个人感觉对函数调用以及各种基础语法的熟悉掌握都很有帮助。思路:先来说说扫雷都具有那些基础功能:首先我们需要一个可以和用户交互的界面:菜单的打印;还有雷区;然后是如何生成雷;其次,我们要将用户输入的坐标进行判断并将结果显示在界面上(是没死,还是被炸了,又或者已经扫雷成功);最后为了...原创 2019-02-13 21:09:26 · 258 阅读 · 0 评论 -
C:参考库函数qsort()模拟实现通用冒泡排序
以下是程序代码://模拟库函数qsort实现通用冒泡排序#define _CRT_SECURE_NO_WARNINGS 1#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;stdlib.h&amp;amp;gt;#include&amp;amp;lt;assert.h&amp;amp;gt;struct Student{ cha原创 2019-02-19 23:41:53 · 342 阅读 · 0 评论 -
C:指针小结(续)【字符指针,数组指针,函数指针,函数指针数组,回调函数】
在我的上一篇博客:学习笔迹:简单指针里,我们了解了指针的概念:1.指针式一个变量,用来存放地址,而地址唯一指向着一块内存空间,通过这个地址,我们可以快速访问里面储存的数据;2.指针根据指向数据的差别是分类型的,类型决定了指针解引用的权限,和走一步的步长;3.在win32平台下,所有指针均占4个字节,在win64环境下,则是8个字节;还学习了二级指针的概念:指向指针的指针以及指针数组的概...原创 2019-02-19 23:27:55 · 131 阅读 · 0 评论 -
C:文件操作指令
文章目录C中的文件操作文件路径文件名文件类型文件缓冲区什么是缓冲区?文件操作核心步骤打开文件关闭文件读文件写文件文件的随机读写附表:tipsC中的文件操作#include&lt;stdio.h&gt;主要对象是磁盘;普通文件与目录文件;文件路径绝对路径(带根目录从最上级开始;有盘符)C:\Windows\AppReadiness\test.txt相对路径(当前路径)...原创 2019-03-04 21:33:17 · 273 阅读 · 0 评论 -
C:指针经典题目详解
求下面的题目在win32环境下的运行结果1.int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&amp;amp;a + 1); printf( &quot;%d,%d&quot;, *(a + 1), *(ptr - 1)); system(&quot;pause&quot;); return 0;}首先我们看到,a是一个存放五个整形元原创 2019-02-20 19:37:35 · 964 阅读 · 0 评论 -
C++:智能指针
智能指针为什么需要有智能指针?智能指针是一种预防型的内存泄漏的解决方案。智能指针在C++没有垃圾回收器环境下,保证在任何情况下资源都能够进行合理的释放,而不用在所有可能退出的地方都进行是否释放的检测,避免由此引发的资源泄露问题;原理RAII:利用对象的生命周期来控制程序资源;将资源使用类的方式进行封装:在对象构造时获取资源,在析构函数中清理资源不需要显式释放资源;采用这种方式对象...原创 2019-08-04 19:13:51 · 323 阅读 · 0 评论