int a[2][10];
int *q;
int (*p)[10];
q = a[1]; //a[1]指向一个元素
p = a+1; //a+1指向一行
运算符重载: . .* :: ?: sizeof 不可以重载
1. 对于单目运算符,建议选择成员函数
2. 对于=,(),[],->只能为成员函数
3. 对于+=,-=,…,%=建议为成员函数
4. 对于其他,建议为由原函数
5. 对于<<,>>输入输出运算符只能作为友元
栈区 堆区 全局区/静态变量 代码区
运算符优先级
1. [] () . -> 左->右
2. – (类型转换) ++ -- * & ! ~ sizeof 右->左
3. / * %
4. + -
5. << >>
6. > >= < <=
7. == !=
8. &
9. ^
10. |
11. &&
12. ||
13. ?:
14. = /= += … 右->左
a^(p-1) = 1mod p , (a, p) = 1
Lucas(a, b, q)= c(a%q, b%q) * Lucas(a/q, b/q, q)
int (*f())[10]{
int (*m)[10];
return m;
}
typedef int (*PA)[10];
typedef int (*PF)(int, int)
int (*m)[10];
int a[10][10];
int b[10];
m = a; //Right
m = &b;//Right
\d \D \w \W \s\S \b \B [A-Z] {3, 6} [^a-z] {3, } * . ? + ()
(?=exp) //后面
(?<=exp) //前面
(?!exp) (?<!exp) (?#comment)
dynamic_cast 主要用于有虚函数的父子类指针式引用之间转换
static_cast 主要用于有继承关系的父子类指针或医用之间的转换,并用于基本类型与类对象之间的转换
reinterpret_cast用于任意指针之间的转换
static_cast,reinterpret_cast 要么成功,要么编译时报错,dynamice_cast失败返回空指针
k = a / b, (a>b)
z = a % b
a = k*b + z
z = a – k*b
设a和b的最大公约数为d
a % d = 0, b %d = 0, (a-k*b) % d = 0
所以,z % d = 0, z= a % b
while(st <ed){
m = st + ((ed-st)>>1);
if(num[m]<k)
st = m + 1;
else
ed = m;
}
return num[ed]== k ? 1:0;
char a[] = “abc”
char b[3] = “abc”//Wrong
char *c = “abc”;c[1] = ‘d’ //Wrong
char d[10] = “abc”