当前位置:网站首页>大一下学期期末总结(补充知识漏洞)
大一下学期期末总结(补充知识漏洞)
2022-06-24 03:50:00 【团团带你学代码】
临近期末考试,借助C++ Primer Plus 这本书,进行相关知识补充和旧知识点的温习
目录
1、无符号类型
无符号类型是一个不太常用的知识点,也正是因为不太常用,所以遗忘了。
int、short、long、long long 这四种类型均属于符号类型,他们都有对应的不能储存负数值的无符号变体,优点就是增大变量能够储存的最大值(就是把负数的空间给正数)当然,仅当数值不为负数时,才应使用无符号类型。如人口、树木的棵数等等。创建无符号版本的基本类型,只需要使用关键字unsigned即可。
例如:
unsigned short change;
unsigned int a;
unsigned c; //同样是指的是整型对应的无符号类型
unsigned long f;
unsigned long long v;
2、数组名的理解
数组名视为指针。c++将数组名解释为其第一个元素的地址。
3、函数指针的基础知识
(1)获取函数的地址
只要使用函数名(后面不跟参数)就可以获取函数的地址,举个例子L假如think()是个函数,那么think就是该函数的地址,只要将函数作为参数进行传递,必须传递函数名。此时就要区分传递的是函数的地址还是函数的返回值。
process(think);//传递think的地址给progress()
thought(think());//传递think()的返回值给thought()
(2)声明函数指针
声明指向某种数据类型的指针时,必须指定指针指向的类型。同样声明指向函数的指针时,也必须指定指针指向的函数类型。
4、内联函数
有关格式:
在函数声明前加上关键字inline
在函数定义前加上关键字inline
5、引用
引用变量可以理解为是给已定义的变量起的别名。引用变量的主要作用是用作函数的形参。通过将引用变量用作参数,函数将使用原始数据,而并不是副本,通俗易懂的来说就是更改其中的任意一个值,另外一个变量也会跟着动。(如此一来,除了指针外,引用也为函数处理大型结构提供了一种非常方便的途径)
下面举个例子:
#include<iostream>
using namespace std;
int main()
{ int a=101;
int &b=a;
return 0;}
//请注意,下述语句的&运算符不是地址运算符,其中的&a表示a引用的变量的地址
int &a=b;简单的例子帮助理解:
#include<iostream>
using namespace std;
int main()
{
int a;
int &bb=a;
a=100;
cout<<&bb; //输出bb对应的地址(应当和a的地址是相同的)
cout<<endl<<bb; //输出bb(也就是a的值,因为bb引用了a)
return 0;}引用和指针的区别
引用和指针存在一些细微的差别,比如必须在声明引用是将其初始化,却不能像指针那样,先声明再赋值。
6、文件操作
读文件
fstream指的是包含写入和读出的文件流,此处定义的a就是一个文件流对象,后面规定的读写方式是out也就是写入文件。后面的is_open函数,是用来判断文件是否被打开的。
a<<"......"指的是写入文件的内容。每运行一次,所生成的文件内容都是这些,因为是out的写入方式,每次运行都会先删除之前文件内的信息,假如想要做出尾加操作,那么应改成app的方式进行文件读写操作。如此一来记录就会被保留,制作ATM机模拟系统时就应该使用app的操作方式。
操作完成后,不要忘记关闭文件对应的链接。
注意:当没有生成的文件时,系统会自动生成一个该名称的文件。假如是in(读文件操作),那么就会报错,假如是out,就会自动生成。
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream a;
a.open("test.txt",ios::out);
if(!a.is_open())
cout<<"can not open the file";
a<<"马上就要考试了啥都不会怎么办"<<endl<<"坚持到最后一刻!"<<endl;
a.close();
return 0;
} 写文件
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream s;
string message;
s.open("文件的读写操作.txt",ios::in);
if(s.is_open())
{
cout<<"文件以成功打开或者成功创建"<<endl;
}
else
cout<<"文件打开失败";
s>>message;
s.close();
cout<<message;
return 0;}读入文件读写操作中的信息,然后输出所获得的信息,进行后续工作。
make_pair和pair的区别
make_pair():
无需写出型别, 就可以生成一个pair对象
例:
std::make_pair(42, '@');
而不必费力写成:
std::pair<int, char>(42, '@')
find函数结合map(multimap)的查找
algorithm头文件的find()。
使用方法:find(begin,end,value),一般用 容器.end()来判断查找成功与否。
参数1 是容器或者数组的起始地址(容器.begin()或者数组名),也可以是任意地址,不非法即可;
参数2是结束查找的地址(容器.end()或者数组名+长度),value是想要查找的字符或者字符串
查找成功将返回迭代器(容器)或者指针(数组),否则返回end()
find返回的是迭代器
假如找不到,就会返回end()
void operation::find_idnum(string idnum1)
{
m2=idnumc.find(idnum1); // map<string,int>idnumc;
if(m2!=idnumc.end())
{
cout<<"找到"<<endl<<person[m2->second]; //vector<message>person;
}
}
用equal_range来查找multimap的符合条件的内容的元素区间。
使用multimap、map是自动排序的,会将其中的信息进行排序,所以用lower_bound和upper_bound查找出来的范围就可以高效使用了。
容器元素插入方式
可以使用for循环或者while循环进行插入操作,但是再写课程设计ATM机时,发现使用while循环时会出现错误,还是使用for循环保险(毕竟使用while循环时需要写好多语句,可能会出现某些差异。)
构造函数、析构函数与文件操作
构造函数、析构函数往往不那么引人注意,但当我们和文件操作相结合时,就应该在他们的函数体中假如读文件和写文件操作。
浅复制与深复制
浅复制概念
●在用一个对象初始化另一个对象时,只复制了数据成员,而没有复制资源,使两个对象同时指向了同一资源的复制方式称为浅复制。
即:对于复杂类型的数据成员只复制了存储地址而没有复制存储内容
●默认复制构造函数所进行的是简单数据复制,即浅复制
边栏推荐
- lldb常用命令
- Two edges are applied by default, one of which is a solid color icon. How to delete that solid color icon?
- The results of the 2022 open source summer were announced, and 449 college students will contribute to open source projects
- 脚本之美│VBS 入门交互实战
- How to identify information more quickly and accurately through real-time streaming media video monitoring?
- Analysis of grafana SSO authentication process based on keyloak
- Easygbs video playback protocol only webrtc can play. Troubleshooting
- Understanding of structure in C language
- Garbage collection mechanism
- web渗透测试----5、暴力破解漏洞--(9)MS-SQL密码破解
猜你喜欢

The results of the 2022 open source summer were announced, and 449 college students will contribute to open source projects

15+城市道路要素分割应用,用这一个分割模型就够了
![Web technology sharing | [map] to realize customized track playback](/img/b2/25677ca08d1fb83290dd825a242f06.png)
Web technology sharing | [map] to realize customized track playback

mysql - sql执行过程
![[numpy] numpy's judgment on Nan value](/img/aa/dc75a86bbb9f5a235b1baf5f3495ff.png)
[numpy] numpy's judgment on Nan value

一次 MySQL 误操作导致的事故,「高可用」都顶不住了!

Clang代码覆盖率检测(插桩技术)

Multi task video recommendation scheme, baidu engineers' actual combat experience sharing

openEuler社区理事长江大勇:共推欧拉开源新模式 共建开源新体系

Training course of mixed accuracy from simple to deep
随机推荐
Black hat actual combat SEO: never be found hijacking
MySQL cases SQL causes 100% CPU utilization
[hot promotion] Tencent cloud enterprise cloud disk solution
How to set the domain name on the server what is the role of the domain name
uni-app进阶之认证【day12】
web技术分享| 【地图】实现自定义的轨迹回放
Black hat SEO practice: General 301 weight PR hijacking
Go operation mongodb
What is pseudo static? How to configure the pseudo static server?
Tencent ECS installs the Minio object storage tool
Idea 1 of SQL injection bypassing the security dog
"." in the structure of C language And "- & gt;" Differences between
15+城市道路要素分割应用,用这一个分割模型就够了
In the post epidemic era, "cloud live broadcast" saves "cloud cultural tourism"?
Kubernetes 资源拓扑感知调度优化
Cadence OrCAD Capture 批量修改网络名称的两种最实用的方法图文教程及视频演示
3. go deep into tidb: perform optimization explanation
C string input considerations
Backup method of mysqldump
Garbage collection mechanism