一、复合类型
1、指针
定义指针类型的变量
类型 *指针变量;
指针存放指定类型的对象的地址,要获取队形的地址,使用取地址运算符“&”。
例如:
int x=100,y=20;
int *pi=&x;
*pi=y; //间接操作pi指向的x,即x=y
2、new和delete
new在动态内存中为对象分配空间,并返回一个指向该对象的指针,可以选择对对象进行初始化。delete接受一个动态对象的指针,销毁指针指向的对象,并释放与之关联的内存。
3、引用
引用又称别名,它可以作为对象的另一个名字。通过引用可以间接的操纵对象,使用方式类似于指针但是不需要指针的语法,
定义
类型&引用变量=初始值;
int ival=100;
int &refval=ival;//refval是变量ival的引用绑定到ival
引用一旦初始化,就不能再绑定带其他对象,对引用的所有对象都会应用在他所绑定到的对象上。
赋值时,引用被作为所指对象的别名。
4、右值引用
在赋值表达式中,出现在赋值号左边的就是左值,出现在赋值号右边的就是右值。
定义
类型 &&右值引用变量 =右值表达式;
右值引用只能绑定到临时对象,右值引用的对象将要被销毁。
变量是左值,因此不能将右值引用直接绑定到变量上,即使这个变量类型是右值引用类型也不行。
5、const限定指针和引用
const只读属性,只使用不修改,限定常量。
指向常量的指针;指向非const对象的指针常量;指向const对象的const指针;const限定引用。
6、结构体
结构体在程序中经常用得到,所以这个使用起来是非常熟悉的。
结构体把一组来自不同类型的数据组合在一起构成复合类型,其中的每个数据都是结构体的成员。结构体由关键字struct定义,语法形式为
struct 结构体类型名{
成员声明;
};
7、标准数据库string
string类的输入操作:
读取并忽略开头所有的空白字符(空格,换行,制表);
读取字符直至再次遇到空白字符,读取终止,
string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;
输入“ Hello World ”
输出将是 “HelloWorld”
sring类型上的操作
getline(is,s)//从istream对象is中读取一行(用到换行符结束)赋给s,返回is。
s.empty()
s.size()//返回s中字符的个数,返回类型为string::size_type
s[n]//n从0开始
s1+s2//连接起来
s1==s2//完全相等,区分大小写
<,>,<=,>=//按字典顺序比较,区分大小写
string上的字符操作
isalnum(c)//当c是字母或数字时为真。
isalpha(c)//字母
isdigit(c)//数字
ispunct(c)//标点
isspace(c)//空格,回车,制表符,换行符
isupper(c)//大写字母
islower(c)//小写字母
tolower(c)//大写————>小写
toupper(c)//小写大写
8、vector
vector在平时也使用了很对,所以在这里只是简单总结了一下。
头文件: #include <vector>
定义:vector <data_type> vector_name;如:vector <int> v;
操作:empty() -- 返回bool型,表示vector是否为空 (v.empty() )
size() -- 返回vector内元素
push_back(data_type a) 将元素a插入最尾端pop_back() 将最尾端元素删除
s.swap(v) // 将s与另一个vector对象进行交换
v[i] 类似数组取第i个位置的元素(v[0] )
9、迭代器
迭代器类似于指针。
支持迭代器的类型都有返回迭代器的成员:begin()和end()。
注意:end()指的是最后一个元素的下一个位置。
两个begin()和end()相减的结果就是他们之间的距离。
二、函数
在这里函数的基本定义就不用说了,还有如何调用参数什么地就不用再说了。
需要注意的一点是:在写实参时,千万不要写数据类型。
在这里来说一下,函数是如何调用参数,以及整个过程。
首先我们在主函数外写了一个函数,并写上了形参。
当在主函数内,利用调用参数使用这个函数,此时整个函数的主动权有主函数的手里进入到函数中,此时程序在我们写的那个函数里面运行,运行结束后,根据return返回到主函数里面来,主动权也交到了主函数手里,此时整个程序和我们写的那个函数已经没有什么关系了。
另外有关参数传递在前面已经写过了,所以在这里就不再复述了。
函数重载
重载函数
名字相同,功能类似,参数类型不同的函数。
需要注意的是。当调用重载函数时,编译器会根据实参的类型推断出要调用的是哪一个函数。
void print(const int *b, const int *e){...}
void print(const int ia[], size_t size){...}
void print(const char *cp){...}
int arr[5] = {1, 2, 3, 4, 5};
print("Hello!");
//调用print(const char *)
print(arr, 5);
//调用print(const int*, size_t)
print(begin(arr), end(arr));
//调用print(const int*, const int*)