自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 类和对象(四)

static可以修饰成静态成员函数,静态成员函数没有this指针,所以访问不了类中的其他成员,只能访问静态成员。因为const的值只能在初始化的时候赋值,为了类中可以自定义const的值,所以有了初始化列表,A类中有B类,B类有一个int变量,A类有一个int变量,A类的大小是4不计算B类的变量。它不属于某个对象,没有存储到类中,存储在静态区,在类中声明,在类外初始化。把变量的声明和初始化分开。A是B的友元(B不是A的友元),B是C的友元但A不是C的友元。类不同于结构体,类中的类是独立的,不占类的空间。

2025-12-20 21:59:02 677

原创 类和对象(三)

用于访问类中的私有元素ostream是一个流对象输出。istream是一个流提取。输入的加快cin和cout的效率。

2025-12-18 20:40:12 390

原创 类和对象(二)

拷贝构造是构造函数的重载。拷贝构造的第一个参数是自身类型的引用。c++对于类的传值传参必须调用拷贝构造。所以不加引用会无穷递归。如果没有使用拷贝构造,默认会生成一个拷贝构造,一个个字节的拷贝。一个个字节的拷贝不会申请空间,如类中的malloc了空间,默认拷贝会拷贝相同的空间。操作空间时会重复多次操作。两个对象进行争抢。对于内有多种类的大类也可以不用写自己的拷贝构造,因为内部的类有自己的拷贝构造。对于相同的空间会释放两遍。类名(const lei&t){引用返回应当使用非临时的变量作返回值。

2025-12-16 23:00:14 581

原创 c++类和对象(上)

本文介绍了C++类的核心概念,包括类的基本结构、内存对齐、this指针、封装特性以及默认成员函数。重点阐述了类的内存分配规则(考虑对齐数)、this指针的隐式传递机制、通过访问限定符实现封装,以及构造函数/析构函数的自动调用特性。同时讲解了运算符重载的两种实现方式(全局函数和成员函数),并指出成员函数方式隐含使用this指针。文章通过多个代码示例展示了类的定义、构造函数重载、析构函数调用顺序等实际应用场景,为理解C++面向对象编程提供了基础框架。

2025-12-13 20:21:31 1419

原创 c++的字符串string

本文摘要:本文系统介绍了C++中string字符串类型的相关操作。内容包括string的基本概念、创建与初始化方法、输入输出操作(cin和getline)、获取字符串长度(size())、迭代器遍历(begin()/end())、字符串修改操作(push_back()、pop_back()、insert())、查找函数(find())、子串截取(substr())、字符串比较以及数值与字符串的相互转换(stoi/to_string等)。通过代码示例详细演示了每个方法的实际应用,帮助读者全面掌握C++字符串处

2025-12-12 17:24:40 1183

原创 C++字符数组

本文介绍了C++中字符数组的创建和使用方法。字符数组每个元素占1字节,支持多维数组定义。使用cin>>a读取字符时会遇到空格终止,而fgets函数可以读取包含空格的字符串,最多读取num-1个字符并将换行符存入数组。示例代码展示了如何用fgets读取字符串并计算其长度(不包括换行符)。此外还提到可以使用getchar逐个字符读取直到遇到换行符,最后补上终止符'\0'来完成字符串输入。这些方法为处理不同格式的字符串输入提供了灵活选择。

2025-12-10 23:49:53 458

原创 c++的引用和类的初见

引用必须创建时赋值。int b;int &a=b;如果 int &a会报错。引用不可以修改。int c;a=c;会报错一个值可以多次引用。int &d=a;相当于&d=b;引用不会开辟新的空间。如图int &b=a;&c=a;&d=a;a,b,c,d.共用一块空间。引用的权限可以缩小,int b=0;b可以++;a不可++;但改b,a也会改引用权限不可放大这是权限放大。int&a=b;

2025-12-09 17:50:59 533

原创 c++中的引用和数组

本质是给一个变量给予一个别名,别名被使用时也会改变原来的变量。这样在函数调用的时候就不用传址了在c++中&可以是引用。也可以是取址。

2025-12-07 20:57:18 171

原创 c++基础扩展

本文介绍了C++中的流程控制语句。if-else语句根据表达式真假执行不同分支,支持bool值和各种比较运算符。switch语句通过整型值选择执行路径,需注意break的作用。循环结构包括while、for和do-while循环,其中for循环包含初始化、条件和步进三个表达式。break用于退出整个循环,continue则跳过当前迭代。文章通过代码示例演示了这些语句的具体用法和注意事项。

2025-12-06 21:11:43 244

原创 c++基础

本文介绍了C++编程基础,包括环境配置、数据类型、变量常量、运算符和输入输出等内容。首先推荐使用Dev-C++作为开发环境,并详细讲解了第一个"Hello World"程序。重点阐述了C++的基本数据类型及其存储特性,包括整数、浮点数和字符类型。文章还深入讲解了变量与常量的定义、位运算操作符、运算符优先级以及表达式求值规则。最后介绍了C++的输入输出方法,包括getchar/putchar、scanf/printf以及cin/cout的使用。对于初学者来说,这些内容是掌握C++编程的基础

2025-12-05 20:33:08 638

原创 数据结构之排序

摘要:排序是将无序数据按规则重新排列的过程,常用于提升数据处理效率。主要排序算法包括:插入排序(稳定,O(N²))、冒泡排序(稳定,O(N²))、堆排序(不稳定,O(N logN))、希尔排序(不稳定,O(N^1.3))、快速排序(不稳定,O(N logN))和归并排序(稳定,O(N logN))。非比较排序如计数排序适用于整数(O(N+range))。算法选择需权衡时间、空间复杂度和稳定性。

2025-12-05 13:40:45 1384

原创 用c++写控制台贪吃蛇

本文介绍了基于控制台的贪吃蛇游戏实现方法。主要技术点包括:1) 使用链表和结构体构建蛇身和游戏状态;2) 通过系统API实现控制台界面绘制和光标定位;3) 实现蛇的移动逻辑、碰撞检测和分数计算。游戏界面包含25×25的活动区域,采用WASD控制方向,支持加速/减速、暂停等功能。程序通过本地化设置支持中文显示,并隐藏了控制台光标。实现过程中解决了窗口尺寸调整、蛇身移动算法、随机果子生成等技术难点,最终完成了一个功能完整的控制台贪吃蛇游戏。

2025-11-29 17:02:31 1642 2

原创 二叉树的遍历

本文介绍了链表二叉树的实现方法,包括节点结构体定义、创建函数以及三种遍历方式。代码实现了二叉树节点的动态分配,定义了前序、中序和后序遍历的递归算法,并详细解释了每种遍历的执行逻辑。此外,还提供了计算二叉树节点总数、叶子节点数、树高度以及第n层节点数量的方法,通过递归和条件判断实现了这些功能。文章包含完整的代码示例和注释,清晰地展示了二叉树的基本操作实现原理。

2025-11-27 21:20:29 1014

原创 数据结构之二叉树中的堆

本文介绍了树和二叉树的基本概念,重点讲解了堆的实现与应用。首先阐述了树的相关术语:节点度、叶节点、双亲节点、兄弟节点等。然后详细说明了二叉树的特性,包括满二叉树、完全二叉树以及大小堆的定义。文章给出了小堆的C语言实现代码,包含初始化、销毁、插入、删除等操作,并分析了时间复杂度。对于大堆实现,只需调整比较条件。最后介绍了堆的应用场景,如获取最大的k个数时使用小堆的高效方法。堆排序的时间复杂度分析表明,向下调整法为O(N),优于向上调整法的O(N*logN)。

2025-11-26 16:00:42 1078

原创 算法复杂度的了解

算法复杂度分为时间复杂度和空间复杂度,分别衡量运行时间和额外存储空间。时间复杂度用大O表示法,保留最高次项并去除系数,常见类型有O(1)、O(n)、O(n²)等。空间复杂度同样采用大O表示法,包括O(1)常数空间、O(n)线性空间等。实际应用中常需权衡时空复杂度,如哈希表以空间换时间,压缩算法以时间换空间。递归算法的时间复杂度可能较高(如斐波那契数列O(2ⁿ)),而迭代通常更优(O(n))。理解复杂度有助于选择最优算法。

2025-11-21 16:36:40 435

原创 数据结构之链表

链表是一种非连续存储的线性数据结构,通过节点指针实现数据元素的逻辑顺序。每个节点包含数据域和指向下一节点的指针。文章详细介绍了链表的基本操作实现:1.节点创建与内存分配;2.遍历打印(递归和循环两种方式);3.插入操作(头插、尾插、指定位置前后插入);4.删除操作(头删、尾删、指定节点删除);5.查找节点;6.链表销毁。重点说明了指针操作和空指针处理的注意事项,以及传址调用对链表修改的必要性。这些基础操作为链表应用提供了完整的技术实现方案。

2025-11-14 21:55:41 1794

原创 数据结构之顺序表

顺序表是基于数组的线性数据结构,解决了数组插入删除不便的问题。它分为静态和动态两种:静态顺序表使用定长数组和有效数据计数;动态顺序表通过指针动态调整空间大小,包含初始化、空间判断、尾插/头插、尾删/头删以及查找等功能,实现了更灵活的数据操作。

2025-11-11 21:31:23 284

原创 c语言预处理

本文详细介绍了C语言预处理器的核心功能和使用方法。主要内容包括:1) 预定义符号如__FILE__、__LINE__等内置宏的使用;2) #define指令定义符号常量和带参数宏的用法及注意事项;3) 预处理运算符#和##的特殊功能;4) 条件编译的多种形式(包括#if、#ifdef等)及其应用场景;5) 头文件包含的两种方式和防止重复包含的技巧。文章重点讲解了宏定义的文本替换本质及其典型问题,强调了正确使用括号的重要性,并比较了宏与函数的优缺点。通过本文可以全面掌握C预处理器的工作原理和各种应用技巧。

2025-11-11 16:40:43 536

原创 程序的编译链接

摘要:翻译环境负责将高级语言源代码转换为可执行程序,包括预处理、编译、汇编和链接四个阶段。预处理处理指令和宏,编译进行语法语义分析并生成汇编代码,汇编转换为机器指令,链接器合并目标文件和库生成可执行文件。运行环境负责程序加载执行,包括内存分配、进程创建、函数调用及资源回收等过程。文章详细说明了C语言程序的完整编译流程和Windows环境下的具体实现方式。

2025-11-10 22:11:05 303

原创 c语言中的文件操作

摘要:本文系统介绍了C语言中文件操作的相关函数和使用方法。主要内容包括:1) 文件的打开与关闭函数(fopen/fclose);2) 文件的读写操作函数(fputc/fgetc/fputs/fgets等);3) 格式化输入输出函数(fprintf/fscanf);4) 二进制文件读写(fwrite/fread);5) 文件指针定位函数(fseek/ftell/rewind);6) 文件状态检测函数(feof/ferror)。同时说明了文件缓冲区的作用和文件打开模式的选择注意事项,为C语言文件操作提供了全面的

2025-11-09 22:08:58 1141

原创 动态内存分配

当你创建int a[30]时,可能只需要20个空间,就浪费了10个空间,可能需要35个空间,就超过了5个空间,使用动态内存分配可以动态的调整a的存储大小。大了就缩小,小了就扩大。

2025-11-08 21:11:39 294

原创 数据在内存的存储和结合体,联合体,枚举。

....}可以匿名,用于只使用一次的场景。可以用typedef重新定义一个名字。自我包含。

2025-11-07 19:02:09 2424

原创 内存操作函数

本文介绍C语言中常用的内存操作函数。memcpy用于非重叠内存的拷贝,需指定目标地址、源地址和长度;memmove可处理内存重叠的情况;memset用于填充指定内存区域。这些函数都定义在<string.h>头文件中,分别实现内存复制、移动和初始化功能。使用时需注意内存分配和长度计算,如int类型数组拷贝要计算字节数(4字节×元素数)。这些函数是底层内存管理的重要工具。

2025-11-05 22:01:39 322

原创 字符串函数

字符串

2025-11-04 11:43:30 439

原创 c语言中的指针

本文全面介绍了C语言指针相关知识,包括:1)指针基本概念、内存访问机制和指针变量声明;2)const修饰指针的两种形式及其约束;3)解引用操作符(*)的应用场景和多级指针解析;4)指针运算、野指针防范和assert断言;5)数组与指针的关系及数组传参本质;6)指针数组、数组指针及函数指针的定义与使用;7)typedef类型重定义和回调函数应用;8)qsort函数实现原理及sizeof与strlen的区别。内容涵盖指针基础操作到高级应用,是理解C语言内存管理和函数调用的核心知识体系。

2025-11-01 00:24:29 1401

原创 操作符详细

本文介绍了计算机中整数的二进制表示方法,重点讲解了补码的原理及其在统一加减运算、消除零冗余方面的优势。详细解析了移位操作符(<<,>>)和位操作符(&,|,^,~)的使用方法及其运算规则,包括特殊位操作技巧。同时概述了操作符优先级规则、表达式求值中的整型提升和算术转换机制,并指出问题表达式中可能存在的运算顺序风险。文章还简要提及了结构体访问操作符和逗号表达式的特性,为理解计算机底层运算和C语言操作提供了系统性的基础知识。

2025-10-24 21:57:53 1136 1

原创 c语言函数递归和操作符分类

赋值操作符=,+=(a=a+z||a+=z),-=,*=,/=,%=,<<=,>>=,&=,|=.^=。(非),++(自加),--(自减,&(取址,*(指针,+,-,~,sizeof。有些时候不合适用递归,重复太多了,耗时长。每次函数调用都需要在栈区申请内存去存放,函数不返回就一直存放不删除。要有限制数,每次都接近限制数防止无限循环。移位操作符<<,>>。关系操作符>,>=,<,<=,==,!算数操作符+,-,*,/,%。递归,函数自己调用自己。逗号表达式(),()。位操作符&,|,^,

2025-10-23 23:46:16 216

原创 VS调试技巧

同理release版本,在release文件夹下exe,不含调试信息,文件比debug小。如在vx2022:debug版本x64环境下时,先定义的arr地址后定义的i小。在调试运行过程中可以在调试——窗口——监视。监测数组时在监测的函数中数组后打上要查的数量如arr,10。F10,逐过程,一步一步运行,包括函数(直接运行)和语句。f11,逐语句,一条一条语句运行可以详细看函数的内容。是语法上的下一个不是物理的下一个。在x84环境下时先定义的arr地址后定义的i大。内存的存放看环境和版本。

2025-10-21 17:41:13 203

原创 扫雷游戏详细编程c++

如果是雷就结束,如果不是雷就输出格子周围的信息;rand()随机数,%row,使随机数在0-8之间,+1使随机数在1-9之间;定义成功的条件,当arr数组的游戏jm未知的格数等于10时,证明只剩下雷了,游戏结束。’1‘的ascii码比’0‘的ASCII值小1,用格子的ascii差值来显示雷的数量。先定义游戏所需的量arr游戏界面,lei雷的位置,i,j负责循环,g,n负责判断。建立一个函数用于生成界面jm()用于省略后面函数的重复编程。建立一个函数用于随机生成雷的位置储存在lei中。’1‘为雷’0‘为空。

2025-10-21 12:00:04 162

原创 函数2和扫雷游戏

函数内不能定义其他涵数如(主函数内不能定义函数runyear),但可以调用。把自己定义的头文件和自己定义的函数放在一块可以通过属性转换为.lib文件。全局变量,作用域是整个项目,生命周期是程序的结束。可以在不同文件夹,调用自己定义的头文件时用""。局部变量,作用域是{}内,生命周期是局部的结束。如果把定义的函数放在主函数后,要在前声明如下图。static用于修饰局部变量,全局变量,函数。static修饰的函数只能在同一源文件使用。通过.lib调用可以隐藏自己定义的函数。使函数只能在单一文件内使用。

2025-10-19 22:26:03 210

原创 c语言中的函数

ret_type(void什么也不返回) fun_name(形式参数){ 函数体 }函数返回类型, 函数名。return m(可以是值,也可以是表达式(先执行表达式再返回))如果形式参数是数组要写行及(arr[ ][m],m要写明)sizeof()会计算空格,setlen。库函数printf,scanf.变长数组一定在运行时确定大小。可以用于函数的提前结束。(c++,c语言参考)

2025-10-19 12:14:29 209

原创 c语言转向语句和随机数

time(time_t*timer)函数会返回1970,1,1.0.0.0到现在的差值换算成秒。定义一个数组type name[m],m是元素个数,不能为0。关机代码在cmd中输入shutdown -s -t 60 60秒后关机。continue跳过本次循环中continue后面的代码。字符串判断用strcmp(字符1,字符2),相等放后0。要规定rand的范围a到b:a+rand(b-a+1)数组是元素合集,类型相同,可以分为一维或多维数组;读取顺序为0,1,2.....。全局变量不初始化它的值是0;

2025-10-14 11:12:13 228

原创 分支和循环2

为假表达式2不运行,表达式3计算。(3<x&&x<5);如果x<3,(x<5)不执行,叫短路,用此方法求值叫短路求值。两边有一个为真时,结果为真。如果左边满足结束条件,那么右边不运行。先执行表达式1,为真表达式2会运行,表达式3不计算。两边结果为真时,总结果才会为真。while(表达式)为真则继续执行。switch(m),m表示整型。a++先使用再加加。

2025-10-12 12:33:34 237

原创 scanf函数,分支和循环

用户的输入先被存入输入缓冲区,按下回车键后,scanf根据格式字符串中的格式说明符,从缓冲区中按序读取并解析数据,跳过空白字符,将符合格式要求的数据转换并存储到指定变量中,同时返回成功读取的数据项数。除了%c其他会忽略开头的空白字符。scanf(" %C")可以忽略空白字符在%c前加空格可跳过空白字。%[m]s表示最多读m个字符,超过的会忽略,[m]是一个整数如%5s只读5个数值,不会看目标空间如arr[5]只能放5个,你输入10也放进去,会报错。格式要匹配,”%d,%d“输入数值时也要用,隔开如5,5。

2025-10-10 21:48:33 201

原创 数据类型与变量

d打印有符号的int数据%u打印无符号的int数据sizeof的返回值是size_t用%zu符号大小类型是用来创建变量。命名规则只能由大小写字母和数字和_,不能数字开头,长度不超过63个字符,区分大小写,不能是关键字。命名时给一个初始值叫初始化变量分全局变量和局部变量在{}外是全局变量,多个{}内可以有局部的局部变量算数运算符+-*/双目操作符有两个数10+20,90-10“数字是操作数”整数/正常是商小数/才得到小数,默认保留6位%取模,两个整数相除的余数。

2025-10-09 21:56:25 335 1

原创 c语言常见概念

C语言是一种编译型计算机语言,需要通过编译器翻译和链接器链接。源文件以.c为后缀,程序从main函数开始执行。头文件如stdio.h提供标准输入输出功能,printf()是常用库函数。C语言包含控制语句(if/switch/循环语句)、转义字符(\n、\t等)、注释(//和/* */)等基本语法元素。程序由关键字(int/char等)、函数调用、表达式语句等构成,通过占位符(%d/%c)进行格式化输出。调试时可使用F10逐过程执行或F11逐语句执行代码。

2025-10-04 15:46:29 139

原创 一个新人的简介

我打算先学习c语言的结构,关键词的用处,自己完成一些小项目。上网寻找资源,来学习。我是一个大一新生,以前接触过编程。到了大一有时间了开始学习c语言。经过几年的学习积累,我希望能够独立开发出自己构想中的小游戏。我希望以后能去中电信数智科技有限公司就业。我打算每周花8个小时去学习c语言。

2025-09-30 11:49:43 114

原创 c语言初入

int %d, % 3d 前三个 %o。*const p常量指针=&num非常量。for (条件,判断,不忙足会修改)scanf("%",&)输入&取址。void无针*(int*)强制指定。用户标识符只能字母,数字,下划线_// /* */注释。%d:输出或输入十进制整数。%c:输出或输入单个字符。continue结束剩下部分。i±±先赋值再±1再重新赋值。%f:输出或输入浮点数。%%:输出一个百分号%本身。%s:输出或输入字符串。*p可以变化=1024。第一个只能字母和下划线。

2025-09-28 18:32:44 158

原创 英语打卡记录

pharmaceutial制药。smartphone智能手机。association社团。generally一般地。permanent永久的。various各种各样的。9月24日,21:45。colleague同事。struggle挣扎。

2025-09-24 21:53:18 183 49

原创 我最开始的学习方法

用gitee记录自己模仿的代码。和csdn写下自己的心得。每天复习300四级单词。要模仿学习,不要纯抄。每周都总结记录下来。

2025-09-24 20:30:55 108 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除