当前位置:网站首页>大一下学期期末总结(补充知识漏洞)
大一下学期期末总结(补充知识漏洞)
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循环时需要写好多语句,可能会出现某些差异。)
构造函数、析构函数与文件操作
构造函数、析构函数往往不那么引人注意,但当我们和文件操作相结合时,就应该在他们的函数体中假如读文件和写文件操作。
浅复制与深复制
浅复制概念
●在用一个对象初始化另一个对象时,只复制了数据成员,而没有复制资源,使两个对象同时指向了同一资源的复制方式称为浅复制。
即:对于复杂类型的数据成员只复制了存储地址而没有复制存储内容
●默认复制构造函数所进行的是简单数据复制,即浅复制
边栏推荐
- How to remote server is the price of the server expensive
- [2021 "shadow seeking" medical artificial intelligence algorithm competition] frequently asked questions related to Ti-One products
- An accident caused by a MySQL misoperation, and the "high availability" cannot withstand it!
- TCP three handshakes and four waves
- web渗透测试----5、暴力破解漏洞--(5)SMB密码破解
- How much space does structure variable occupy in C language
- Prometheus pushgateway
- Clickhouse synchronous asynchronous executor
- How to modify the channel name registered by the camera in the easygbs national standard platform?
- openEuler社区理事长江大勇:共推欧拉开源新模式 共建开源新体系
猜你喜欢

祝贺钟君成为 CHAOSS Metric Model 工作组的 Maintainer

Congratulations to Zhong Jun for becoming the maintainer of chaos metric model working group

Brief ideas and simple cases of JVM tuning - how to tune

Kubernetes resource topology aware scheduling optimization

mysql - sql执行过程

openGauss 3.0版本源码编译安装指南

博士申请 | 香港科技大学(广州)刘浩老师招收数据挖掘方向全奖博士/硕士

15+城市道路要素分割应用,用这一个分割模型就够了

Black hat actual combat SEO: never be found hijacking

多任务视频推荐方案,百度工程师实战经验分享
随机推荐
Clickhouse thread occupation troubleshooting and killing
Flutter series: offstage in flutter
How to set up a web server what is the price of the server
Go operation mongodb
Structure size calculation of C language struct
"." in the structure of C language And "- & gt;" Differences between
An accident caused by a MySQL misoperation, and the "high availability" cannot withstand it!
I have an agreement with IOT
What is etcd and its application scenarios
15+城市道路要素分割应用,用这一个分割模型就够了
Browser rendering mechanism
web渗透测试----5、暴力破解漏洞--(8)PostgreSQL密码破解
抢先报名丨新一代 HTAP 数据库如何在云上重塑?TiDB V6 线上发布会即将揭晓!
Understanding of structure in C language
编译器是如何将芯片执行的第一个指令放到芯片起始地址的?
Configuration process of easygbs access to law enforcement recorder
近两周ACM之DP总结
TCP three handshakes and four waves
[2021 "shadow seeking" medical artificial intelligence algorithm competition] Ti-One product use tutorial
C string input considerations