1,传值与传引用
传引用:修改实际作用与变量,“别名”,不需要拷贝;
const: const int var=1;常量,不能修改,顶层。
const int *p;指向常量的指针,可指向变量/常量,但不能通过p修改。
int const *p;常量指针,必须初始化,指针p的值不能再修改,类似var。
2,二位数组形参的形式:两种
int (*matrix)[10];
int matrix[][10];
常数10需匹配
3,int main(int argc,char *argv[])
4,可变形参
- initializer_list (C++11) 该类中的值永远是常量,不能修改。
-
-
-
- 构造:initializer_list<T> lst; ~ lst{a,b,c,..}; ~lst2(lst); lst2=lst;
- size(),begin(),end();
-
-
-
- ...(c语言)
- void foo(parm_list,...);
- 头文件<stdarg.h>/<cstdarg>
- va_list类型
- void va_start(va_list ap,paramN); 初始化参数列表ap
- type va_arg(va_list ap,type); 取下一个参数
- void va_end(va_list ap); 结束
- void va_capy(va_list dest,va_list src); (C++11) 拷贝src到dest.
5,使用尾置返回类型(C++11)
auto func(int i) ->int (*)[10] 返回指针,指向含有10个整数的数组
6,使用 decltype (C++11)
int odd[]={1,3,5,7};
decltype(odd) *arrptr(int i); 返回指针,指向含有5个整数的数组,和odd一样(包括大小);
7,重载
函数名相同,但形参列表不同:1,数量;或 2,类型;
顶层const忽略,底层const算重载;
const_cast<T>(var) 改变运算对象的底层const.