每日总结
每日总结
今天跟着视频学习了拷贝函数的基本用法,同时对视频中的案例都进行了代码实现,有一些需要理解的知识点如下。
学习了拷贝函数的基本构造语法:
Person(const Person &p){}
学习了拷贝函数的调用方法,调用时机:
使用一个创建完毕的对象来调用拷贝一个新的对象,默认属性全部复制:12Person p1(10) ;Person p2(p1) ;
通过值传递给参数赋值12345void doWork(Person p){}void test01{ Person p; doWork(p);}
通过调用函数,利用值的方式返回局部对象12345678Person doWork(){ Person p1; return p1;}void test02(){ Person p = doWork();}
学习了调用规则:
如果类中没有写任何对象初始化和清理的函数,那么编译器会默认调用默认构造函数(无参,函数体为空),默认析构函数(无参 ...
力扣
二分查找算法思路:一般用于解决n个有序递增元素的数组,给定目标值,返回数组下标,同时还不能有重复元素,二分法的原理很简单,大致思路是先设置左右区间,然后用区间中心的元素值和 target进行比较,不断更改区间即可。
易错点:二分查找一般分为:左闭右闭区间和左闭右开区间,容易混淆的是:
边界条件,while循环里面到底是left<right还是left <= right ?,更改区间的时候到底是改成middle 还是middle+(-) 1 ?
设置middle时出错,一般middle中间值的设定有middle =left+(right-left) 和middle = (left+right) /2 两种 ,第一种是最适合计算中间索引的方法,不会存在整数溢出的情况,反之第二种大多时候都适合,但是当两个边界相加可能超过整数类型的最大值是会造成数据溢出,从而计算出错.因此,更偏向于使用第一种,即 middle = left+(right-left)/2。
代码实现:第一种(左闭右闭)1234567891011121314151617181920 ...
addressBook
通讯录管理系统1.系统需求
添加联系人
查找联系人
显示联系人
删除联系人
修改联系人
清空通讯录
推出通讯录
2.菜单功能1234567891011void ShowMenu(){ cout<<"*********************"<<endl; cout<<"****1.添加联系人****"<<endl; cout<<"****2.显示联系人****"<<endl; cout<<"****3.删除联系人****"<<endl; cout<<"****4.查找联系人****"<<endl; cout<<"****5.修改联系人****"<<endl; cout<<"****6.清空联系人****"<<endl; c ...
day05
1.空指针和野指针1.1空指针空指针: 空指针是一个已初始化的指针变量,它被显式地赋值为一个特殊的值,表示它不指向任何有效的内存地址。但是注意空指针是无法解引用的,无法进行访问。
12345678int main(){ int *p=NULL; cout << p <<endl; //访问失败 无法解引用 return 0;}
1.2野指针野指针: 野指针是指一个指针变量,其值不是空指针,但所指向的内存区域是非法的或已经被释放。野指针可能由于以下原因产生:1.指针变量声明后并没有初始化,它的初始值是随机的,可能指向任意一个内存地址2.指针变量指向的区域可能通过某种方式释放了,但是p的指向并没有发生改变,因此指向了一个无效区域,因此应该及时的在释放内存后将指针指向NULL(nullptr)
2.const修饰指针const指针修饰有三种情况:1.const修饰常量–指针常量2.const修饰指针–常量指针3.const既修饰常量又修饰指针
首先注意 *p=10是修改指针指向区域的值,p=&b是 ...
day04
1.数组元素逆置案例描述:请声明一个5个元素的数组,并且将元素逆置.(如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1)核心思路:1.可以新建一个数组临时映射当前的数组2.可以通过指向数组头节点的伪指针start以及指向末尾的 end,然后两个指针不断彼此靠近,即可实现逆置(注意考虑循环终止的条件)
1234567891011121314151617181920212223242526//第一种思路关键代码 int arr[5]={1,3,2,5,4}; int arr1[5]={1,3,2,5,4}; for(int i=0;i<=4; i++ ){ arr[i]=arr1[4-i]; } for(int j=0;j<=4;j++){ cout<<arr[j]<<","; } cout << endl; return 0//第二种思路 in ...
day03
经典编程题1.水仙花数案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身例如:1^3 + 5^3+ 3^3 = 153请利用do…while语句,求出所有3位数中的水仙花数
123456789101112131415161718#include<iostream>#include<cmath> //使用pow注意包含头文件<cmath>using namespace std;int main(){ int num; int i=100; int ge,shi,bai; do{ ge=i%10; shi=i%100/10; bai=i/100; if(pow(ge,3)+pow(shi,3)+pow(bai,3)==i){ cout<<i<<"符合条件"<<endl; } i++; ...
day02
c++语法学习1 基础框架1234567#include<iosream>using namesapce std;int main(){ cout<<hello world<<endl; system("pause"); return 0;}
与c语言不同:头文件变成了由stdio.h变为了iostream,并且要在第二行加一个 using namespace std;类似于声明全局变量;输出语句由printf变成了 cout<< "内容"<<endl;
2 数据类型c++中数据类型相比于c语言中主要有以下几处不同
2.1 整型
数据类型
占用空间
取值范围
short(短整型)
2字节
(-2^15 ~ 2^15-1)
int(整型)
4字节
(-2^31 ~ 2^31-1)
long(长整型)
windows为四=4个字节,linux(32位)为4字节,linux(64位)为8字节
(-2^31 ~ 2^31-1)
long ...
day01
markdown语法字体倾斜文字:你好呀倾斜文字:你好呀加粗文字:你好呀倾斜加粗文字:你好呀删除线:你好呀分割线:***或者—,___
添加图片格式为:![] +图片网络路径即可示例:利用picgo图床添加本地图片
写入链接跳转格式为<链接>示例:http://nmylove.cn
代码块使用 ` (在esc下面,需要三个引起来) 添加代码块
12345#include<stido.h>int main(){ printf("hello world"); return 0;}
如果想引用代码块,使用一个反引号即可。示例:int main
First Blog
我叫杨,射手座,出生于2003年12月12日,住在江西九江,正在学习编程ing~