1.创建数组 typeName arrayName(arraySize)
2.不会检查数组下标是否有效
3.不能将一个数组赋值给一个数组
4.STL提供了vector,array两种数组,替代传统的
5.使用空白字符连接的两个字符串,会自动连接成为一个字符串
6.strlen()不计算字符串后的\0
7.cin使用空白字符(空格、制表符、换行符)来确定字符串的结束位置
8.cin.getline(arrayName,arraySize),会丢弃换行符;cin.get(arrayName,arraySize),换行符留在输入队列
9.输入有错误时,会设置失效位failbit,后面的输入会被阻止。使用cin.clear();可恢复输入
10.使用string ,包含<string>,string对象可以互相赋值,可以使用+连接两个string对象
11.C-风格字符串使用<cstring>,<string.h>头文件 strcpy,strcat,strncpy,strncat
12.元素字符串cout<<R"(AaBcCc\\\a\a\b\v\r"")",C++11才有
13.同一种结构可以使用 = 来互相赋值
14.C++的结构可以包含成员函数,只是一般用于类中
15.结构数组,初始化方式
{
{初始化1},{初始化2},...
}
16.句点运算符可以访问结构的成员
17.共用体(联合) union声明类似于结构,共享一块内存,常用于节省内存
18.枚举 enum,声明类似于结构,事实上是0 - n整数的别名,枚举量
enum enumName(变量1,变量2,...)
19.指针是一个变量,存储的是值的地址,而不是指本身
20.*为间接值或解除引用运算符
21.指针是复合类型,指针要初始化为一个确定的地址,没有则为NULL
22.使用new,在运行阶段非配未命名的内存,使用指针来访问。C有malloc()类似
23.使用delete释放new分配内存,可以对空指针使用delete
24.C++将数组名解析成地址,数组名是常量。对指针进行加减操作,指针移动n * sizeof(指针指向类型)
25.自动变量存储在栈中,后进先出LIFO策略,静态存储,在程序的整个生命周期存在;动态存储,管理在内存池,C++称为堆heap,自由存储空间free store
26.->间接成员运算符
27.使用vector,声明:vector<typeName> vt(n_elem) n_elem可以是整型变量或常量 使用运行时设置,使用堆
28.array<typeName,n_elem> arr 使用栈,编译阶段确定,长度固定,用于替代传统的数组方式
29.使用vector、array,可以使用成员函数at(下标),来访问数组的值
30.vector是动态数组的替代品;array是定长数组的替代品;
4.12 复习题 有答案,就不写了。
4.23编程练习
1.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string fname;
cout<<"what is your first name?";
getline(cin,fname);
cout<<"what is your last name?";
string lname;
getline(cin,lname);
cout<<"what letter grade do you deserve?";
char ch;
cin>>ch;
cout<<"what is your age?";
int a;
cin>>a;
cout<<"Name:"<<lname<<","<<fname<<endl
<<"Grade:"<<ch<<endl
<<"Age:"<<a<<endl;
while(1);//让dos页面不关闭
return 0;
}
2.不写了
3,4
#include <iostream>
#include <string>
using namespace std;
int main()
{
string fname;//char fname[10];
cout<<"Enter your first name:";
getline(cin,fname);//cin.getline(fname,10);
cout<<"Enter your last name:";
string lname;//char lname[10];
getline(cin,lname);//cin.getline(lname,10);
cout<<"Here's the information in a single string:"<<lname<<", "<<fname<<endl;
while(1);//让dos页面不关闭
return 0;
}
5.
#include <iostream>
#include <string>
using namespace std;
struct CandyBar
{
string brand;
float weight;
int calorie;
};
int main()
{
CandyBar snack = {"Mocha Munch",2.3,350};
string blank = " ";
cout<<snack.brand<<blank<<snack.weight<<blank<<snack.calorie<<endl;
while(1);//让dos页面不关闭
return 0;
}
6.
#include <iostream>
#include <string>
using namespace std;
struct CandyBar
{
string brand;
float weight;
int calorie;
};
int main()
{
CandyBar arraysnack [3] ={
{"Mocha Munch",2.3,350},
{"xiao huang",2.3,350},
{"xiao dan",2.3,350},
};
string blank = " ";
for(int i = 0;i<3;i++){
cout<<arraysnack[i].brand<<blank<<arraysnack[i].weight<<blank<<arraysnack[i].calorie<<endl;
}
while(1);//让dos页面不关闭
return 0;
}
7-9 省略
10.
#include <iostream>
#include <string>
#include <array>
using namespace std;
int main()
{
array<double,3> vt;
int i;
for (i = 0;i<3;i++)
{
cin>>vt[i];
}
cout<<"跑了 "<<i<<"平均成绩为:"<<(vt[0]+vt[1]+vt[2])/3<<endl;
while(1);//让dos页面不关闭
return 0;
}