自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++基础(4)

1 运算符重载• 当运算符被⽤于类类型的对象时,C++语⾔允许我们通过运算符重载的形式指定新的含义。C++规定类类型对象使⽤运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。• 运算符重载是具有特殊名字的函数,他的名字是由operator和后⾯要定义的运算符共同构成。和其他函数⼀样,它也具有其返回类型和参数列表以及函数体。• 重载运算符函数的参数个数和该运算符作⽤的运算对象数量⼀样多。⼀元运算符有⼀个参数,⼆元。

2024-08-17 10:39:07 831

原创 C++基础(拷贝构造函数)

6.传值返回会产生⼀个临时对象调用拷贝构造,传值引用返回,返回的是返回对象的别名(引用),没有产生拷贝。但是如果返回对象是⼀个当前函数局部域的局部对象,函数结束就销毁了,那么使用引用返回是有问题的,这时的引用相当于⼀个野引用,类似⼀个野指针⼀样。传引用返回可以减少拷贝,但是⼀定要确保返回对象,在当前函数结束后还在,才能用引用返回。如果⼀个构造函数的第⼀个参数是⾃⾝类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。

2024-08-16 09:20:52 683

原创 C++基础(3)

析构函数与构造函数功能相反,析构函数不是完成对对象本⾝的销毁,⽐如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会⾃动调用析构函数,完成对象中资源的清理释放⼯作。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),⽽是对象实例化时初始化对象。• 编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做this指针。

2024-08-14 17:39:15 649

原创 C++基础(2)

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的>,这⾥引⽤也和取地址使⽤了同⼀个符号**&**,⼤家注意使⽤⽅法⻆度区分就可以。

2024-07-29 13:16:12 785

原创 C++基础(1)

在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。• 使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是C++的流能更好的⽀持⾃定义类型对象的输⼊输出。所以下⾯程序会编译报错。定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。

2024-07-29 12:47:35 985

原创 C语言-函数-练习

编写一个函数 reverse_string(char * string)(递归实现)写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。n* n的k-1次方。

2023-03-02 17:21:04 124

原创 C语言-函数

告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。函数的声明一般出现在函数的使用之前。要满足先声明后使用。函数的声明一般要放在头文件中的。//函数的声明 int Add(int x , int y);int a = 0;int b = 0;//求和 int ret = Add(a , b);return 0;} //函数的定义 //函数的定义也是一种特殊的声明 int Add(int x , int y) {

2023-02-17 12:33:04 108

原创 C语言-函数

如果库函数能干所有的事情,那还要程序员干什么?所有更加重要的是自定义函数。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。statement;//语句项 } ret_type 返回类型fun_name 函数名para1 函数参数例子:写一个函数可以找出两个整数中的最大值。x : y);int a = 20;int b = 10;return 0;写一个函数可以交换两个整形变量的内容。

2023-02-15 17:29:25 97

原创 分支和循环语句

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过。编写代码实现,模拟用户登录情景,并且只能登录三次。它只能从最内层循环退出到上一层的循环。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。rand函数返回的是0~RAND_MAX(32767)之间的一个随机数。C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。编写代码,演示多个字符从两端移动,向中间汇聚。提示登录成,如果三次均输入错误,则退出程序。NULL - 空指针。

2023-02-11 19:55:58 88

原创 分支和循环语句

举例:购买一双鞋 由我来猜价格 鞋的价格1-500最高不超过500,一定是先从中间猜250,询问大了小了,如果大了,那便再从1-250取中间数125,如果小了,那便从250-500取中间数375。我们发现do while循环和for循环和while循环中的break和continue中的意思是一样的。我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较。

2023-02-10 19:43:02 100

原创 分支语句和循环语句

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。else if 的形式太复杂,那我们就得有不一样的语法形式。在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。else的匹配:else是和它离的最近的if匹配的。如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结构就是所有的语句都被跳过而已。

2023-02-10 18:27:38 71

原创 初始C语言(2022-10-19)

test.c–> 编译 + 链接(链接会自动在其他文件搜索和自己相关的代码)–> .exe。在static的修饰,会把外部链接属性变成内部链接属性,最终使得全局变量的作用域变小。register可以使a放到寄存器里,现在的vs软件已经可以省略了。使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用。typedef 顾名思义是类型定义,这里应该理解为类型重命名。被static修饰后,外部链接属性就变成内部链接属性。static是用来修饰变量和函数的。函数本身是具有外部链接属性的。

2023-02-05 14:18:37 101

原创 初始C语言(2022-10-17)

C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。C语言规定:数组的每个元素都有一个下标,下标是从0开始的。C语言中给了数组的定义:一组相同类型元素的集合。//如果数组10个元素,下标的范围是0-9。++ 前置、后置++– 前置、后置–要存储1-10的数字,怎么存储?== 用于测试“相等”& 取地址。|| 逻辑或。= 用于测试“不相等”数组可以通过下标来访问的。

2022-12-26 14:34:40 104

原创 初始C语言-10-16

声明最好在最上面声明,因为代码运行时是从上面检查有没有错误的,即使放在中间是正确的,但是编译器不是这么认为的。注:字符串的结束标志是一个 \0 的转义字符。因为ch1中15,因为没有\0,15是错误的,并且是随机值每个编译器都不同。C语言提供的一个库函数,可以计算字符串的长度,统计的是\0之前字符的个数。有些事必须一直做,比如我日复一日的讲课,比如大家,日复一日的学习。变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。的而限定这个名字的可用性的代码范围就是这个名字的作用域。

2022-12-26 14:08:49 125

原创 初始C语言(10-13)

1TB (Trillionbyte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方),1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,1MB (Megabyte 兆字节 简称“兆”)=1024KB,1PB(Petabyte 千万亿字节 拍字节)=1024TB,1EB(Exabyte 百亿亿字节 艾字节)=1024PB,生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)

2022-11-04 22:24:44 213

原创 字符函数和字符串函数

在默认的“C”区域设置中,小写字母是以下任意字母:a b c d e f g h i j k l m n o p q r s t u v w x y z,分别翻译为: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z。目标中的终止空字符被源的第一个字符覆盖,并且空字符包含在由目标中两者的串联组成的新字符串的末尾。为避免溢出,目标和源参数所指向的数组大小应至少为数字字节,并且不应重叠(对于重叠的内存块,memmove 是一种更安全的方法)。

2022-10-12 10:28:43 64

原创 指针的进阶

不同的数组的时候就会开辟出不同的内存块。数组的地址+1,跳过整个数组的大小,所以 &arr+1 相对于 &arr 的差值是40.12. 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。根据上面的代码我们发现,其实&arr和arr,虽然值是一样的,但是意义应该不一样的。实际上: &arr 表示的是数组的地址,而不是数组首元素的地址。在《指针》章节我们也学了指针数组,指针数组是一个存放指针的数组。既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址。

2022-09-29 21:45:04 99

原创 深度剖析数据在内存中的存储

例如:一个 16bit 的 short 型 x ,在内存中的地址为 0x0010 , x 的值为 0x1122 ,那么 0x11 为。空间的大小是根据不同的类型而决定的。大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址。小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地。把一个数值的低位字节的内容,存放到低地址处,高位字节的内容,存放到高地址处。把一个数值的高位字节的内容,存放到低地址处,低位字节的内容,存放到高地址处。

2022-09-29 09:36:10 152

空空如也

空空如也

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

TA关注的人

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