C++学习阶段总结

一,复合类型
1.指针和引用
指针可以持有对象的地址,引用则是对象的别名。指针持有一个对象的地址,称为指针指向这个对象。
定义指针变量的语法为 类型 *指针变量指针存放指定类型的对象的地址,要获取对象的地址使用取地址运算符“&”。例如:

int ival=120;
int *pi=&ival;
char ch=‘a',*pc=&ch;

c++提供了一种通用指针,即void*指针,它可以持有任何类型的地址值。
指针的典型用法:(1)构建链式的数据结构,如链表和树。
(2)管理程序运行时动态分配的对象。
(3)作为函数的参数。
引用
就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

声明
类型标识符 &引用名=目标变量名;
定义引用ra,它是变量a的引用,即别名。

int a;
int &ra=a;

以下六点需要注意
(1)&在此不是求地址运算符,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量有两个名称即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。
(6)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。
2.标准库类型string
使用string类要包含头文件 < string >
(1)定义和初始化string对象

string s1; 默认初始化,s1是一个空串
string s2(s1); s2是s1的副本
string s2 = s1; 等价于s2(s1)
string s3(“value”); s3是字面值"value"的副本,除了最后那个空字符外
string s3 = “value”; 等价于s3(“value”);
string s4(n,‘c’); 把s4初始化为由连续n个字符c组成的串
(2)string对象上的操作

os<<s 将s写到输出流os当中,返回os
is>>s 从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is,s) 从is中读取一行赋给s,返回is
s.empty() 为空返回true,否则返回false
s.size 返回s中字符的个数
s[n] 返回s中第n个字符的引用,位置n从0计起
s1+s2 返回s1和s2连接后的结果
s1=s2 用s2的副本代替s1中原来的值
s1+=s2 追加,把s2的内容追加到s1后面
s.c—str() 转换,c++转换成c,字符串转换成字符数组
s1==s2 判断是否相等,字符完全一样则相等
<,<=,>,>= 利用字符在字典中的顺序进行比较,区分大小写

(3)读写string对象

#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s<<endl;
return 0;
}
输入 abc

输出 abc

可以直接用输入输出流进行操作

(4)getline函数

功能:

从输入流中读入字符,存到string变量

直到出现以下情况为止:

•读入了文件结束标志

•读到一个新行

•达到字符串的最大长度

–如果getline没有读入字符,将返回false,可用于判断文件是否结束

int main()
{
string line:
while(getline(cin,line))
cout<<line<<endl;
return 0;
}
这是一个死循环程序

(5)处理string对象中的字符

函数名称 返回值
isalnum() 如果参数是字母数字,即字母或者数字,函数返回true
isalpha() 如果参数是字母,函数返回true
iscntrl() 如果参数是控制字符,函数返回true
isdigit() 如果参数是数字(0-9),函数返回true
isgraph() 如果参数是除空格之外的打印字符,函数返回true
islower() 如果参数是小写字母,函数返回true
isprint() 如果参数是打印字符(包括空格),函数返回true
ispunct() 如果参数是标点符号,函数返回true
isspace() 如果参数是标准空白字符,如空格、换行符、水平或垂直制表符,函数返回true
isupper() 如果参数是大写字母,函数返回true
isxdigit() 如果参数是十六进制数字,即0-9、a-f、A-F,函数返回true
tolower() 如果参数是大写字符,返回其小写,否则返回该参数
toupper() 如果参数是小写字符,返回其大写,否则返回该参数
3.标准库类型vector
要使用vector必须包含头文件< vector >
4.迭代器
迭代器类似于指针类型,提供对对象的间接访问。支持迭代器的类型都有返回迭代器的成员:begin()end()。通过这两个操作可以获取容器上的迭代器。
标准容器迭代器的运算符

*iter 返回迭代器iter所指元素的引用
iter->men 解引用iter并获得该元素的名为men的成员,相当于(*iter).men
++iter 令iter指示容器的下一个元素
–iter 令iter指示容器的上一个元素
iter1==iter2 如果两个迭代器指示的是同一个元素或者它指向同一个容器的尾后迭代器,则相等。
二.c++函数
函数是一个命名的代码块,通过调用函数可以执行相应的代码。我们也可以编写并使用自己的函数,需要定义函数、声明函数、调用函数。
函数声明:函数在使用前必须声明。一个函数可以在程序中多次声明。函数定义也可以被用作声明,但是函数在程序中只能定义一次。函数声明由函数返回类型、函数名和形参列表构成。
递归函数:直接或间接调用自己的函数称为递归函数。递归函数必须定义一个停止条件,否则会陷入无限递归调用。
参数传递
传值调用 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
指针调用 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
引用调用 该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值