自定义博客皮肤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)
  • 收藏
  • 关注

原创 考研前所学的c语言04(2024/10/21)

因此,当你的下标过大时,访问到的内存,就不再是这个数组“份内”的内存。8.在上图的打印字符串,我们可以运用到while循环里面,当while的条件是0的时候,就退出循环,那么什么时候是0呢,也就是假,当然是打印字符串时候的最后一位结束符\0了。如果一个数组定义为有n个元素,那么,对这n个元素(下标为0 到 n-1的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为“越界。常见的错误就是数组的size值和下标访问值弄错,数组的下表是从0开始的,最大的访问值是size-1。这称作对数组的访问。

2024-10-21 21:07:05 513

原创 考研前所学的c语言03(2024/10/17)

1.由于C语言中没有布尔类型,所以在c语言中。是逻辑非,反过来的意思,结合方式是右到左。当i是真的时候就可以输出后面。0值代表假,非0值为真。3.输入数字查看是否是闰年。求字节用sizeof()

2024-10-21 18:18:52 106

原创 考研前所学c语言02(2024/10/16)

当我们让 scanf 函数一次读取多种类型的数据时,对于字符型数据要格外小心,因为当一行数据中存在字符型数据读取时,读取的字符并不会忽略空格和'n'(回车符),所以使用方法如下例所示。1011是2的0次幂+2的1次幂+2的3次幂,为1+2+8=11,因为十六进制只有0-9,a-f,a为10,b就为11,所以该二进制转十六进制为7b;得到的都是16进制的,且用什么变量就用取地址时用什么变量,那为什么7b在前面呢,本来应该在后面的,如下图。0111是2的0次幂+2的1次幂+2的2次幂,为1+2+4=7;

2024-10-16 23:21:40 408

原创 考研前所学的c语言01(2024/10/15)

"A" 是字符串常量(string constant)。所以 "A" 实际上是一个包含两个字符的数组:'A' 和 '\0'。%4.2的意思是保留至少四位,而且保留两位小数,比如如果为98.983,即为98.98;如果为9898.983,即为989898.98(注意是至少保留四位)'A' 是字符常量(character constant)。它表示单个字符,并且它的类型是 char,一个字节。%3d的意思是保留至少三位字符,我们有18与188,那么至少保留三位即可对齐。3.基本代码02(符号常量)

2024-10-15 23:54:43 267

原创 友元的一些资料

这个代码还是挺简单的,是要思路对了就很好理解了,我们先创建一个Building的对象,给它属性以及无参构造函数,我们在下面书写goodgay函数,给它传入Building的对象(我们可以使用引用或者指针的方式),给它传入对象后我们就可以使用Building里面的属性通过我们传入的对象。我们创建了两个属性,并且通过无参构造函数给属性赋了值, 这个时候再创建一个goodgay类,形参是应用的buil1的对象,用这个引用的对象调用属性。下面是转换后的代码 ,它没有在();对象在栈上分配足够的内存,并调用。

2024-08-13 00:29:56 296

原创 常对象以及常函数(const)

往深一点理解就是,在没有加const以前,this指针是相当于一个指针常量,指针指向的值可以修改,但指向不可以修改,现在就相当于this.age=100,因为指针指向的值可以修改现在左值便可以被赋值,但当我们加了const之后,那就是指针指向的值以及指针的指向均不可以修改,所以这时候常函数里面的属性就不可以被修改了,但是在加了mutable这个关键字后的属性,就可以在常函数中被修改了。在创建对象前面加上const就是常对象了,常对象不可修改属性值,除了加了mutable关键字的属性,如下图。

2024-08-10 17:28:44 405

原创 空指针对象访问成员函数(非常不推荐使用)

2.我们继续让他访问第二个函数fun01,但是却出现了报错,因为age前面一般都默认有一个空指针,但是我们目前没有一个准确的对象,现在只是一个空指针,所以无法调用这个属性。但是请注意,使用空指针去访问成员函数是一个非常危险的行为,它可能会是运行崩溃,不适用这种方法。1.我们创建一个空指针,让他访问了第一个函数fun,输出目前没问题。

2024-08-10 13:46:59 137

原创 This指针的概念

这里我们p2调用了一次函数后上面的函数返回值是一个void,试问返回一个void在下面如何调用函数,所以我们得返回一个p2,但是不要直接返回一个p2,因为若直接返回一个p2就为值传递了,值传递是copy出一个新的副本,这时候的p2就不是原来的p2了,所以我们需要使用引用,引用是不改变值本身的,直接改了一个别名,地址没变,而且我们返回p2就用*this,因为现在是p2在调用这个函数,所以现在this指向的对象是p2.我们最后是使用的p2调用的函数,现在This指针指向的对象就是p2,

2024-08-10 13:01:38 538

原创 成员变量和成员函数分开存储

在下图中,因为非静态的成员变量是属于对象的,所以它的内存空间大小也应该与对象挂钩,在空对象时候对象的大小为一个字节占用内存空间以便区分各个对象,在有两个非静态的成员变量时则对象的内存大小为4+4,因为静态的成员变量不属于对象所以其内存大小也与对象无关。你是不是没有发现上图出现了一个错误但是编译器没有报错,请看第七行,我们创建了静态的成员变量,那么需要类内声明,类外初始化,在这里我们忘记了类外初始化,正确的应该如下图。因为静态的成员变量不属于某一个类的对象,因为他们都是共享的,那么这样反过来说就是。

2024-08-10 11:07:03 243

原创 静态成员变量以及静态成员函数

使用static的静态成员变量,我们要进行类内声明,类外初始化的操作·,初始化是必须的,不然调用一个还没有初始化的成员变量这个在那都不允许,static同样也是,在类外的初始化中,我们将静态的成员变量复制到嘞外,去除static,还必须得加上person:: ,这个代表了后面的成员变量age是在类person下的,不加的话也会报错。因为静态成员变量是共享同一份数据的,而一个类可以创建很多个对象,所以静态成员变量是不属于某个对象上的,而是所有的对象共享同一份数据,所以静态成员变量有两种方式进行访问。

2024-08-10 10:41:06 245

原创 对象类作为类成员(详解版)

我们需要给person类里面的属性进行赋值,这个时候需要用到初始化列表(有参),那么我们的实参是20时,传给形参age1,后面的age(age1)的意思为属性age的值为age1,所以age的值就为我们传给age1的20,但是实参的小米在传给形参name1时,发现name=name1,但是它的数据变量是Phone,那么现在就是Phone name=name1(隐式转换),而Phone类刚好有个string类便赋值给上面的PN了。并且给它一个有参函数赋值给PN。

2024-08-09 23:08:45 455

原创 初始化列表的基本介绍

第16行创建出来的对象给了两个实参,这两个实参给了上面的有参的初始化列表,例如实参给了20,那么20到了上面的形参age1就直接将age1赋值给了age,这个时候你要问为什么,因为刚才我们的无参初始化构造函数时,后面是不是跟了属性(值),这行时候反过来看这里,第九行,属性是age对吧,值给了age1对吧,这个意思不就是age的值是age1吗,这个时候就回到了七点,多想一想就OK了。无参的初始化列表,这种方法的坏处是直接定义了属性的值,不方便进行改变,比较古板。

2024-08-09 22:34:23 486

原创 拷贝函数promax讲解

再注意,系统提供的默认拷贝函数是简单的复制操作,比如a=p.a,那么当我们使用new运算符的时候,会产生一个地址指向的值,但两个属性的地址都是一样,这个时候因为我们使用了new运算符所以需要释放,释放的过程为先进后出,所以会导致一个问题就是重复释放,为了避免这种问题我们应该是的两个属性的地址分开,都用new运算符分开即可,即a=new int(*p.a),两个属性都指向不同的地址但是值是一样的。在默认的情况下即使我们不写c++编译器也会自己添加三个函数,默认函数,有参函数以及拷贝函数,

2024-08-08 11:57:11 309

原创 拷贝函数的三种调用方式

额外声明一点,因为我们知道struct和class很相似,目前我们知道这两个的区别在于在默认情况下的权限不一样,class默认下是私有权限,而struct是公开的,但是这都不是重点,重点是他们两很相似,而struct是一个自定义数据类型时候用的,由此可以推断我们的class后面也是自定义的数据类型。这里我们有两个函数work和test01,work函数创建一个对象p1,并且返回,在test01中我们调用了work函数且用p来接收这个对象,但是注意,我们值传递时,返回的对象并不是这个对象本身,是对象的副本。

2024-08-08 10:35:23 308

原创 构造函数和析构函数

2.析构函数,它和构造函数有一个共同的特点就是都没有返回值也不用写void,析构函数没有参数所以也必不可能发生重载,析构函数的函数名也是类名,但是要在类名前加上一个~符号,程序在对象销毁的时候会自动调用析构函数,不用手动调用且只会调用一次。构造函数可以有参数,所以可以发生重载,程序在调用对象的时候会自动调用构造函数,不用手动调用且只会调用一次。在我们调用了对象后,构造函数便自动调用了,又因为我们创建的类的对象是在函数中,所以为局部变量(毋庸置疑),在栈区使用完后便会销毁,当对象销毁时析构函数又会被调用。

2024-08-07 19:02:48 168

原创 对象与类的一些基本定义与例子(C++)

4.struct和class很相似,但他们有一个区别,struct里面的属性是公开的,而class里面的数据是私有的在默认的情况下,一般来说class里面的属性应该私有的要好一些,因为在私有情况下我们可以自己控制读写权限,也就是写为一个行为,通过行为来进行权限,但行为记得要public公开,下面是一个例子。3.类在设计的时候,属性可以放在不同的权限下,有公开public, 保护protected, 以及私有 private。1.例题要求,设计一个学生类,实例化对象,并且进行赋值。

2024-08-07 17:29:51 153

原创 引用的一些基本定义(C++)

因为局部变量是在栈区,数据运行完后就会进行自动释放,但我们在返回局部变量后第一次却没有丢失数据是因为编译器有一个保护功能,一般情况下第一次是保护数据,第二次数据就该丢失,这里第二次数据也没有丢失,可能是因为栈空间没有被覆盖的偶然情况,栈空间随时可能会被覆盖,导致后面的数据就不是原来的数据,所以返回局部变量是一种十分危险的行为、第10步就错了,在引用了b后又引用了c,不可二次引用,但是却可以二次赋值,a引用了b后可以将数据赋值给a,a改变的同时b也会改变,因为a是b的引用。5.不要返回局部变量的引用。

2024-08-07 12:05:52 376

原创 C++内存四区

3.代码区有两个特点,共享和只读,共享是因为对于频繁要执行的程序,我们在内存中有一份代码即可,所以共享就可以了,只读的话相当于我们可以双击打开软件,但是却不可以在代码中进行修改代码的操作。当我们new一个数据时候(new出来的东西是一个地址),数据是存放在堆区的,指针保存的数据也是放在堆区,堆区开辟的数据,由程序员手动开辟,手动释放,释放时利用操作符delete,1.当我们编写C++程序的时候,这些数据会被划分为四个区域,分别为1-代码区,2-全局区,3-栈区,4-堆区。

2024-08-07 10:42:46 329

原创 结构体的定义和一些基本使用

在第23行,我们通过地址传递Teacher的对象T,用指针U来接收,若想调用用学生的属性,则先用老师的对象来调用学生再调用学生的属性,记住,传递谁,便用谁的数据类型,利用上图,我传递的是老师的对象的取址,所以接收的时候也要用老师Teacher这个数据类型。记住,const是一个常量,使用多的地方是用在打印东西的时候,因为要让他不能误写,只能进行读的作用。1.结构体的概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。7.结构体中const的使用场景。6.结构体的地址传递。

2024-08-06 20:43:16 276

原创 利用指针来升序数组,(冒泡排序)

我们写完数组后,通过写函数来是代码清晰明了,第一个升序函数,通过传入arr与len,再用冒泡排序的方法即可将数组升序,这里注意,传入arr,也就是数组的首地址,函数用Int * arr接受,这里传入首地址,也就是指针的方法,这个首地址(指针)允许函数内部通过数组索引的方法来访问数组中的其他元素,再简单一些说也就是当我们写arr[i]的时候,编译器会将其替换为*(arr+i),其中arr是数组首地址,i为偏移量。下面的打印函数同样的道理。

2024-08-06 18:23:45 331

原创 指针的一些基本定义

这里指针指向数组的首地址,若直接输出*p解引用的话就输出的是第一个元素1,我们弄一个for循环,在每次打印后,进行p++,由于p是一个整型指针,在执行p++后,p的地址会增加sizeof(p的数据类型)个字节从而跳转到下个整数元素,注:一个字节由8位bit组成,而一个bit可以表示0-255中的任何数值,每个元素都占用一定的字节,若一个数组中第一个元素中地址为0x1000,那么增加4个字节后为0x1004,即为第二个元素的地址,16进制的数通常用0x开头代表,这是最简单的一个指针,int * p=&a;

2024-07-23 23:17:25 217

原创 三目运算符

这个三目运算符的意思, a > b?——>如果a>b,那么输出a,否则输出b,注意中间是冒号,不熟悉可以多打几遍加深记忆

2024-07-23 23:16:17 284

原创 #include<iostream>#include<string>using namespace std;struct Student

cout << "学生的名字是:" << Tea.s.name << " " << "学生的年龄是:" << Tea.s.age << " " << "学生的成绩是:" << Tea.s.score << endl;cout << "老师的名字是:" << Tea.name << " " << "老师的年龄是:" << Tea.age << " " << endl;Tea.s.name = "黎";Tea.name = "周";

2024-07-20 23:03:40 262

原创 #include<iostream>#include<string>using namespace std;struct Student{ string name; int score;

cout << TeacherArr[i].name <<"老师带的学生有:"<< endl;

2024-07-20 23:03:05 171

原创 结构体嵌套结构体(C++)

cout

2024-07-19 22:23:28 441

原创 案例描述:每名老师带领5个学生,总共有3名老师,设计学生和老师的结构体

cout

2024-07-19 22:19:09 738

原创 封装一个函数,利用冒泡排序实现对数组的升序排序

cout

2024-07-18 22:32:18 337

原创 指针的一些基本性质

/可以用数据类型来检测,也就是int *,但用p的话也可以,因为p的数据类型也是int *,也就是指针。//eg:*p3=20,这个就是指向的值修改了,不可以修改所以是错的。//eg:*p4=20.这个是指针指向的值修改了,可以修改所以是对的。//eg:*p5=20,这个指针指向的值修改了,不能修改所以是错的。//eg:p3=&c,这个是指针的指向修改了,可以修改所以是对的。//eg:p4=&d,这个是指针的指向修改了,不能修改所以是错的。//eg:p=&e,这个是指针的指向修改了,不能修改所以是错的。

2024-07-18 22:30:56 483

原创 函数的分页编写

1.创建.h后缀名的头文件。2.创建.app后缀名的源文件。3.在头文件中编写函数的声明。4.在源文件中编写函数的定义。5.以上完成即可在其他.cpp后缀名的源文件中利用#include"swap.h"的头文件使用相对应的函数(头文件有双引号表示自定义的头文件)。

2024-07-17 23:09:04 218

原创 函数的四种基本样式:无参无返、无参有返、有参无返、有参有返

cout

2024-07-17 22:24:23 480

原创 函数的定义(C++)

返回值类型 函数名字(所需的参数)//函数的结构与main方法的函数结构很像。return 表达式。//下面是我举的一个加法的函数例子。

2024-07-16 21:29:01 172

原创 冒泡排序(C++)

cout

2024-07-16 20:21:08 462

原创 简单的数组逆置

cout

2024-07-15 21:28:51 182

原创 五只小猪称体重,用C++输出最重的小猪体重

cout

2024-07-15 21:08:01 159

原创 利用C++输出一个乘法口诀表

int main()i < 10;i++)b < 10;b++)return 0;

2024-07-15 20:38:39 394

原创 敲桌子游戏(从1-100中遇到个位为7,十位为7,以及7的倍数时输出敲桌子)

cout

2024-07-14 21:53:55 193

原创 用C++查询出所有三位数中的水仙花数

cout

2024-07-14 21:41:42 135

原创 用C++求一个三位数的个位、十位、百位

cout

2024-07-14 21:29:30 979

原创 用C++写一个简单的猜数字游戏

cout << "你猜的数字过小" << endl;cout << "恭喜你猜对了" << endl;cout << "你猜的过大" << endl;cout << "请输入你猜的数字" << endl;

2024-07-14 20:46:34 1024

原创 Visual Studio如何将提示的代码按enter补全(中文版)

在Visual Studio的上侧依次点击工具——选项——文本编辑器——C/C++——高级——主动成员列表提交,将false改为ture。

2024-07-12 12:38:58 834 1

空空如也

空空如也

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

TA关注的人

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