近期不熟知识点学习总结

这篇博客总结了C++编程中的关键知识点,包括函数的参数传递方式(传值、传指针、传引用)、auto类型说明符的使用、指针和引用的细节,如空指针、const限定,以及结构体的操作。还介绍了标准库中的string类的比较、赋值和连接,以及字符串流的概念和应用。

一.函数

参数传递
定义:参数传递是指用函数调用的实参来初始化函数形参存储区的过程。
1.函数的形参是局部对象,仅在函数的作用域内可见
2.每次调用函数时,会创建形参变量,并用传入的实参初始化形参
3.如果形参是引用类型,形参将绑定到对应的实参上,否则,将实参的值复制后赋给形参
4.参数传递方式
I.传值,按值传递参数。当实参的值被复制给形参时,形参和实参是两个独立的对象,实参被称为按值传递,或传值调用函数
II.传指针:使用指针参数是传地址值。
传递指针参数,用于交换两个变量的值

void pswap(int *pv1, int *pv2){ 
int t;
t = *pv1;  *pv1 = *pv2;  *pv2 = t; 	//间接访问
}
int main(){
int ival1 = 10, ival2 = 20;
int *p1 = &ival1;
int *p2 = &ival2;
cout << ival1 << " " << ival2 <<endl;
pswap(p1,p2);
cout << ival1 << " " << ival2 <<endl;
}

III.传引用,按引用传递参数。此时,引用形参绑定到实参,是实参对象的别名。
函数操纵的形参是实参的别名,因而可以改变实参的值.
传递引用参数,交换两个变量的值.

void swap(int& rv1, int& rv2){ 
int t;
t = rv1;
rv1 = rv2;
rv2 = t;
}
int main(){
int ival1 = 10;
int ival2 = 20;
cout << ival1 << " " << ival2 <<endl;
swap(ival1,ival2);
cout << ival1 << " " << ival2 <<endl;
}

使用引用参数传递大对象,使用const限定可以避免实参被修改

5.参数传递方式的选择

数组和函数作参数时必须传指针
拷贝构造函数的参数必须传引用

数组作参数时,将传递数组第一个元素的地址
将形参数组声明为const表明不希望改变数组元素

二.auto类型说明符

1.用auto声明变量的类型,由编译器去自动分析表达式的类型,推断出变量的实际类型
定义auto变量必须有初始值

.指针和引用

1.空指针
指针值为0时是一个空指针,即不指向任何对象的指针.
生成空指针的3种方法
I. int *p1 = nullptr;
II. int *p2 = 0;
III. int *p3 = NULL;

2.const限定指针
指向const对象的指针(非const )
const type cp; 或者type const cp;
cp是指向常量的指针,它所指向的内存中的内容不可以改变,即
cp的值不能改变
指向非const对象的const指针
type
const cp = initAddressValue;
cp是常量指针,初始化后值不能改变,指向固定的单元
指向const对象的const指针
const type* const cp = initAddressValue;

const int ival = 5;
const int* const pi = &ival; 
		//pi是一个指向const对象的const指针

第一个const限定int,表示指针指向的单元是常量;
第二个const限定pi,表示指针的值也是一个常量
因此,指针pi所在内存的值不允许改变,它所指向内存的值也不能改变

四.结构体

1.结构体的成员不能独立使用,必须由结构体类型的变量通过成员选择运算符“.”来选择,或者由结构体类型的指针通过“->”运算符选择。
2.数组上的指针运算
I. 指针加或减一个整数n,结果仍是指针
II. 两个指针相减的结果是它们之间的距离,参与运算的两个指针必须指向同一个数组中的元素

五.标准库string类

1.
| 在这里插入图片描述
2.比较string对象
可以用关系运算符比较两个字符串对象
两个string相等意味着它们的长度相同,并且所包含的字符也完全相同
字符串的大小关系依照字典顺序定义且区分大小写字母

string s1 = "hello";		
string s2 = "hello world";	// s2 > s1
string s3 = "Hello";		// s3 < s1, s3 < s2

3.string对象的赋值和连接
I. 两个字符串可以直接用运算符“+”连接,结果得到一个新的string对象
II. "+"运算符要求至少有一个运算对象是string

4.头文件中的标准库函数
在这里插入图片描述

六.字符串流

1.
istringstream:从string对象中读取数据
ostringstream:向string对象写入格式化的内容
stringstream:从字符串读取数据,将数据写入字符串
2.
I. 使用时包含标准库头文件
II. 在定义时直接用string对象初始化
III. strm.str(s),将字符串s复制到字符串流strm中,返回void
IV. strm.str(),返回字符串流strm中保存的字符串的副本
3.字符串流的用途
从输入流一次性读取一大块数据,以字符串形式保存在istringstream对象中,再用适当的输入操作逐项从istringstream对象中提取各个数据项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值