自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C语言】static关键字的妙用

static修饰局部变量可以改变局部变量的生命周期,不改变作用域,修饰全局变量和函数时均是改变的是链接属性,即可理解为锁在所在文件,不允许别的文件访问。其实这样可以防止别人使用自己定义的变量。

2024-05-16 11:18:16 489

原创 【C语言】VS编译器的scanf

我们在写代码的时候通常需要用到输入函数:scanf,但在vs编译环境下却必须写为:scanf_s,这是为什么呢?这里就是vs规定的了,VS认为这样写更安全,但如果我们非要写成scanf形式也是有办法的。那问题来了,如何找到这个文件你,这里博主不得不安利一个查找文件的好帮手Everything了,链接在这里。但这种方法要每次在第一行加这个东西,是不是很累,所有为了长远打算,小编不建议这样整。拖动后再执行输入内容,进而保存的操作,为什么这样就可以了捏?我们回到刚查找到这个文件的路径位置,找到这个文件。

2024-05-16 10:12:12 295

原创 【C++】string类的模拟实现

上一期,我们已经对string类有了简单的了解,大家能正常使用即可。在面试中,面试官喜欢让同学们自己来string类,主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。请看以下string类的实现是否有问题:说明:上述String类没有显式定义其拷贝构造函数与赋值运算符重载,此时编译器会合成默认的,当用s1构造s2时,编译器会调用默认的拷贝构造。最终导致的问题是,s1、s2共用同一块内存空间,在释放时同一块空间被释放多次而引起程序崩溃,这种拷贝方式,称为浅拷贝。

2024-05-07 19:14:25 323

原创 【C++】string类

我们先了解一下什么是OOP思想OOP思想即面向对象编程(Object-Oriented Programming)的核心思想,主要包括“抽象”,“封装”,“继承”和“多态”四个方面。总的来说,OOP思想通过抽象、封装、继承和多态等特性,使得软件开发更加模块化、灵活和易于维护。在面向对象编程中,开发者可以创建对象来模拟真实世界的实体,并通过这些对象之间的交互来实现复杂的软件功能。

2024-05-07 17:02:19 1509

原创 【C++】模板初阶(泛型编程与模板)

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)

2024-04-24 20:45:18 848

原创 【C++】类和对象(下)

在创建对象时,编译器通过调用构造函数,给对象中的各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。【注意】3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。 4. 成员变量在类中的声明次序就是其在初始化列表中的初始化顺序,与其在初始化列

2024-04-24 14:42:23 1408

原创 【C++】类和对象(中)

一个类中什么成员都没有时,称为空类。空类并不是真的什么都没有,任何类在什么都不写时,编译器会自动生成6个默认成员函数。:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。

2024-04-20 20:20:45 633

原创 【C++】类和对象(上)

class Node//类体由成员函数和成员变量构成class为定义类的关键字,Node为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。(其实类和结构体几乎一弄一样)声明和定义全部放在类体中class Nodepublic:private:char* _sex;int _age;小知识:成员函数定义在类中,编译器有可能将它们视为内联函数。

2024-04-20 19:19:29 2009

原创 【C++】C++语言入门

在 C++ 中,函数重载指的是定义多个具有相同函数名,但是参数列表不同的函数。这些函数可以具有不同的参数类型、参数个数或参数顺序,但是他们的函数名必须相同。注意:重载函数的参数个数、参数类型或参数顺序,这三者中必须用一个不同。函数重载的规则:1. 函数名必须相同2.参数列表必须不同(个数不同、类型不同、参数排序顺序不同等)3.函数的返回值可以相同也可以不同4.仅仅返回类型不同不足以成为函数重载//函数重载:C语言中不允许同名函数,但c++可以(函数名相同,函数参数不同,构成函数重载)

2024-04-16 19:55:54 396

原创 C语言的编译和链接

(假定某个程序中声明了一个某长度的数组,但是一个机器的内存有限,我们需要一个很小的数组,但是另外一个机器的内存很大,我们需要一个较大的数组。这就又说明了C语言的方便之处,要是你想使用ADD这个常量,又不确定它之前有没有被定义过,直接上#under指令,取消一下它的定义即可。当然,你要是之前就没有定义过ADD,直接写#under ADD这句话也没错啦,它的定义任然是有效的。可以看到,代码中没有明确定义数组的大小。__TIME__: 表示当前编译的时间,格式为"HH:MM:SS",例如"10:30:36"。

2024-03-21 21:27:16 421 1

原创 时间复杂度

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。2、当大头为一个常数时,无论有多大,时间复杂度都为O(1),运算次数为1,时间复杂度为O(1),运算次数为10亿,时间复杂度也为O(1),为什么呢?(注意:1、当大头为2N时,时间复杂度为O(N),看似N和2N差距不小,其实不然,举一个例子,当我们要去宇宙中寻找一个距离我们为一亿光年的东西和一个距离我们两亿光年的东西,那这两件事对我们来说都一样,都不可能完成。N>>M时:时间复杂度为O(N);

2024-03-21 11:16:15 338 1

原创 C语言的指针

与指针数组名字相反,同理可以理解为指向数组的指针,这里我们要对数组名有所理解,数组名就是数组首元素的地址,但有两个例外:1、sizeof(数组名)计算的是整个数组的大小,单位是字节;2、&数组名,取出的是整个数组的地址。这两种数组名都表示的是整个数组。同理函数指针就是指向一个函数的指针,有人会想,指针怎么能指向函数呢?如果上面打印的是*p,就要用%c,因为*p指向的是字符a,打印出的也只能是字符a。同理,函数指针数组就是以“指向函数的指针”为一组元素的数组。

2024-03-17 12:27:58 213 1

原创 C语言的数组

数组就是一组相同类型的元素集合,写法为int arr[5];中括号里的数字表示这个数组的元素个数,既可以写常量,也可以写常量表达式:int arr[2+3];int为此数组的类型,也是此数组中所有元素的类型,值得注意的是,在C99之前数组只能由常量指定的大小,C99之后引用了变长数组的概念,数组的大小可以使用变量指定,但部分编译器不支持变长数组如:VS2022、VS2019,(变长数组是不能初始化的)

2024-03-15 18:49:11 373 2

原创 C语言的函数(二)

他通常把一个大型的复杂问题层层转化为一个与原函数相似的规模较小的问题来求解,递归策略,只需要少量的程序就可以描述出解题过程所需的多次重复计算,大大地减少了程序的代码量。函数的定义是指函数的具体实现,交待函数的功能实现,我们写自定义函数的时候一般都将自定义函数写在使用之前,此时的函数就是一种特殊的声明,不用再声明此函数。例如上面的嵌套调用的函数,写在前面的自定义函数已经完成了声明。函数的声明一般出现在函数的使用之前,要满足先声明后使用的条件,并且函数的声明一般会放在头文件中。

2024-03-15 15:41:30 564 1

原创 C语言的函数(一)

函数的参数分为实际参数(实参)和形式参数(形参),实参可以是常量、变量、表达式、函数等,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。很显然,库函数的种类和功能非常有限,想要实现生活中的各种需求就必须由程序员们自己去编写自己需要的各种函数,这类由程序员自行编写和实现的函数就称为自定义函数。数学中的函数是给出一个公式去解决自变量和因变量的关系,那C语言中的函数是什么呢?

2024-03-14 19:42:32 252

原创 C语言的分支与循环

生活是由无数个选择题组成的,我们每天都会面对大量的选择,是否睡懒觉、早餐吃包子还是面条、今天工作量不大要不要摸鱼、要不要继续努力拿到一个更好的offer等等都是选择题,在C语言中我们就可以用 if 语句写出选择结构的代码,if 语句的语法结构为if(表达式)+执行语句;C语言中可将语句分为五类:表达式语句、函数调用语句、控制语句、复合语句、空语句,每种语句都有不同的特点,大部分语句都是以;结尾的,即一个分号就是一条语句,这里我们详细讲解的是控制语句,即分支与循环语句都属于控制语句。

2024-03-14 17:02:54 566

原创 C语言的指针与结构体(初识)

在C语言中,创建一个变量其实就是向内存申请一块空间,比如:int a=10,就是向内存申请一块大小为4个字节的空间,每个字节都有地址。&a的时候,拿出的是4个字节中地址较小的那个字节(最前面的位置)的地址,这个地方要储存起来,给一个变量,这个变量就是用来存放地址(指针)的,所以又叫指针变量:int *pa=&a;又比如一本书的信息:书名、作者、出版社、定价等,都是复杂对象。指针变量所占空间的大小与该空间内存储了多少无关,在x86的环境中指针变量的大小为4个字节,在x64的环境中指针变量的大小为8个字节。

2024-03-13 20:42:42 286

原创 C语言的函数和数组(初识)

和不完全初始化(int add[5]={3,4,5};),需要注意的是不完全初始化时,未初始化的元素默认为0,在此基础上还有一个特殊的初始化---清零初始化,即让数组中的所有元素默认为0(int add[5]={0};(注意:int Add(int x, int y)本身即是定义也是声明,但当我们把它放到函数调用那一行的后面时就需要在它的前面再声明一下:int Add(int x, int y)。需要注意的是数组的下标是从0开始的,如上面的数组中数组中的元素1是0号位,2是1号位,3是2号位。

2024-03-13 16:16:03 227

原创 C语言的选择语句和循环语句(初识)

循环结构由循环语句执行,循环语句包括 for 循环、while 循环和 do while循环。C语言是一种结构化的程序设计语言,大致可分为三种结构:顺序结构、选择结构、循环结构。选择结构由选择语句执行,选择语句包括 if 语句和 switch 语句两种;

2024-03-12 19:03:18 159 1

原创 C语言的字符串,转义字符和注释

字符串:由双引号引起来的一串字符被称为字符串字面值,简称字符串,如:“hello bit”。(注意:字符串是可以存放在数组中的,字符串的结束标志是末尾隐藏的转义字符"\n",计算字符串长度时,\n是结束标志且不算在长度内,打印字符串用%s)注释:注释的出现是为了帮助我们更好的理解代码,当我们写完一个很大很长的代码后,可能会遗忘前面的部分代码的含义,或者当别人接手自己的代码或者自己接手别人的代码时,会有一些地方无法理解,因此,养成良好的注释习惯是每一个优秀的程序员所必备的技能。多行注释:/*注释内容*/。

2024-03-11 17:49:53 190

原创 C语言的数据类型及初识常量

数据类型,变量,作用域,常量

2024-02-23 14:12:45 196 1

原创 初识C语言

二十世纪八十年代,为了避免各开发商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准,2017年,国际标准化组织(ISO)和国际电工委员会(IEO)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,此前还有C89,C99,C11。1、创建项目:打开VS界面---创建新项目---空项目(项目名称要有意义,尽量不写中文,不能空格),看到“解决方案资源管理器”就说明项目创建好了(小窗口可以拖动,如果没有看到可以点击视图打开。

2024-02-22 12:30:18 128 1

原创 初识Java

首先了解一下Java之父------詹姆斯.高斯林,1990年,高斯林和另外几人合作了一个“绿色计划”,发展了一套语言叫做“Oak”,1995年5月改名为Java,并提出“Write once, Run anywhere”(一次编译,导出运行)的口号。值得一提的是,虽然目前Java更新了很多版本,但现在依然更多使用的是JDK8,因为JDK8使用更稳定,Java8也是一个长期发布版本。今天开始学习Java,已经正式定好未来几年的学习方法了,前段时间紧赶慢赶终于学完了C语言部分,现在跟着博哥好好学Java。

2024-01-26 16:22:02 144 1

原创 今日学习:assert,strlen,传址调用

库函数,计算字符串的长度,遇到"\0"为止,strlen函数的返回值类型是size_t,是一个无符号整型,%zd或者%u,函数参数是一个字符类型的数组,用char*接收,因此被计算的数组要用char定义。当测试代码结束后不再需要断言时可以在头文件<assert.h>前加一个宏NDEBUG,写法为#define NDEBUG,然后整个程序的assert断言都会失效。传值调用时,函数的实参传给形参,形参是实参的一份临时拷贝,拥有独立的空间,因此对形参的修改不会影响到实参;而传址调用传的是地址形参改,实参也改。

2023-11-29 15:36:40 110 1

原创 学习与我与感悟

我们就像这个被const修饰的变量一样,从小就被告知我们生在最好的年代,和平,自由,包容,当然事实也确实如此,但又不完全这样,我们似乎一直在接触一种无声的硝烟,家庭的矛盾,社会的冲突,同学同事的小心思,总也没个让我们能够完全放松的时候,总也找不到一个值得我们卸下伪装、敞开心扉的人或地方,似乎我们离真正的自由只差一个小小的const,但无论如何努力,const依然还在,我们依然只是名义上的变量,事实上的常量,自由与我们仿若两根平行线,永远不能相交,即使在梦中相交了也只有那一点,那一瞬间罢了。

2023-11-28 13:26:21 108

原创 迷茫与我与C语言

五年!五年!你知道这五年我是怎么过的吗?

2023-11-16 21:37:02 120 1

空空如也

空空如也

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

TA关注的人

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