偏向精度高的,有符号偏向无符号,前提是哪个精度高偏向哪个
33L 用long类型存储整形常量 long与int:标准只规定long不小于int的长度,int不小于short的长度。
字符串以\0结尾,char[3]={'a','b','\0'}; 不以\0结尾是字符数组 计算时要算上空字符
cin get 遇到空格\0就认为结束
strlen计算字符数量,sizeof计算内存大小
cin.getline(m,5) 将5个字符放到m中
同一类型的不同名称的结构体可以相互赋值 结构体变量赋值要加等号
结构数组,是一个数组,每个成员是结构体,例如:ycc[0].name
枚举是整形,可以转换为int类型,int类型不能转换为枚举类型,需要通过强制类型转换 int类型级别要高于枚举类型
new开辟内存空间 int *pt = new int; 开辟int内存空间 int *pt = new int [10] 返回的是第一个元素地址 new sizeof(xxxxx) delete [] num;删除数组
delete释放内存 delete pt; 不会删除指针,只会删除内存
double *pt= new double [3]; pt[0] pt[1] pt[2] 数组指针
double的指针+1跨过两个int类型 num[10] &num取的是整个数组的地址
char *pt = "abc" pt指针指向abc字符串
字符串赋给一个——strncpy{xxx,"xxxxxxxx",n} 传N个字符到xxx中 ps->name == (*ps).nme 结构体指针
strcat(xxxx1,xxxx2); 将后面追加到前面
命名空间namespace 类似全局的库,全局作用域下,都可以调用这个里面 std::xxx
vector<int>a(x) array<int,4>num 数组定义 可以使用赋值把两个数组内容交换
结构体数组 是个数组,每个元素都是结构体
内联函数 直接定义的时候加inline
省去了保存调度的空间时间,运算更快更节约资源
------------------------------------------------------------------------
引用 int &num = abc; &是个标识符 表示引用 引用永远效忠自己对应的那个
使用const定义形参
string 定义一个字符串
结构体引用
struct xxxx xxxx abc (xxxx &ft) ft代表abc
基类和派生类
基类引用可以引用派生 ostream &os 定义一个基类引用
传递数组用指针,传递类用引用,传递结构体指针和类都可以
for(i = 0 ; i < n && str[i] ; i++) i<n 和 str[i] 都为真
左右值
int a = 10; 对a能取地址,它就是左值 对10不能取地址,它就是右值
传统引用 int &a = c; 赋值的要是一个能取地址的 不然就是常引用 const int &a = 10;
const int &b = (a+b)
函数多态 = 函数重载
函数名相同只是参数列表不一样 int cnus() 和 double cnus 两个类型不一样,不能重载
函数模板 重载模板
都要加template<typename T> void swap(T &a) void swap(T arr[]) class和typename互换
结构体:显示具体化 template<>void swap<job>(job &a1,job &a2) 结构体 <job>为了表示原始的表示不了job类型
优先非模板,然后显示具体化,然后常规模板 非模板->void swap(int &a,int &b)
template <> void 具体化 template void 模板实例化
decltype 强制类型转换 int x; decltype (x) m m就是int decltype((x)) m int类型的引用
默认值必须从右往左 void song(int x, int b,int c) 从c开始赋值