一、笔记
1.初始化数组 int oook[4] = {25,32,22,16}; (C++11允许 = 号省略)
(只有在定义数组时才能初始化,其他时候不能初始化,也不能将一个数组赋予给另外一个数组。)
2.strlen()只计算可见的字符。
3.读取一行字符串
cin.getline(name,20) : 丢弃换行符。其中第一个参数用来储存输入行数组的名称,第二个参数是要读取的字符数,如果此参数为20,则函数最多读取19个字符。
cin.get(name,20):不丢弃换行符。
4.String 类
4.1 不能将一个数组赋予另一个数组,但是可以将一个string对象赋予另一个string对象
4.2可以使用运算符 ”+“ ,”+=“。
4.3 以下是两种确定字符串中字符数的方法:
int len1 = str1.size();
int len2 = strlen(charr1);
其中,str1和charr1是数组名
4.4
下面是将一行输入读取到数组的代码:
cin.getling(charr, 20); 【cin是一个istream对象】
下面是将一行输入读取到string对象中的代码:
getline(cin,str);
4.5 cout << R“ /n/b ”,显示/n/b
4.6 在char数组和cstring头文件中,使用cin.getline(name,20)
在string和string头文件中,使用getline(cin.name)
5.结构 struct name
{
char name[20];
float volume;
double price;
};
初始化 name guest = {“Daphe”, 0.12 ,9.98};
6.枚举
enum spe {red, orange, yellow}; 对应0,1,2
spe band;
band = red; 【没有为枚举定义算术运算】
7.指针
7.1int jumbo = 23;
int* pe = &jumbo;
值 23 | 地址0x2ac8 |
---|---|
jumbo | &jumbo |
*pe | pe |
【一定要在对指针应用解除引用运算符()之前,将指针初始化为一个确定的、适当的地址】
7.2 int pon = new int [10];
delete [] pon;
【只能使用delete来释放new分配的内存。】
eg.
#include<iostream>
int main()
{
using namespace std;
double* p3 = new double[3];
p3[0] = 1.1;
p3[1] = 2.2;
p3[2] = 3.3;
cout << "p3[1] is " << p3[1] << endl;
p3 = p3 + 1;
cout << "p3[0] is " << p3[0] << endl;
p3 = p3 - 1;
cout << "p3[2] is " << p3[2] << endl;
delete[]p3;
return 0;
}
8.数组的替代
8.1 vector
#include < vector >
…
using namesapce std;
vector< typeName >dv(n_elem);
【该声明创建一个名为vt的vector对象,可以储存n_elem个类型为typeName的元素,其中n_elem可以是整形常量也可以是整形变量。】
8.2 array
#include < array >
…
using namesapce std;
array< typename, n_elem> arr;
【该声明创建一个名为arr的array对象,可以储存n_elem个类型为typeName的元素,其中n_elem是整形常量。】
9.类型组合
#include<iostream>
using namespace std;
//创建结构
struct anta_end
{
int year;
};
int main()
{
//创建变量
anta_end s01, s02, s03;
//使用成员运算符访问其成员
s01.year = 1998;
//创建指向这种结构的指针
anta_end* pa = &s02;
//使用间接运算符来访问成员
pa->year = 1999;
//创建结构数组
anta_end trio[3];
//其中trio是一个数组,trio[0]是一个结构,trio[0].year 是该结构的一个成员
trio[0].year = 2003;
cout << trio->year << endl;