main:处理命令行
//main函数的两种定义形式
int main(int argc,char **argv[])
int main(int argc,char *argv[])
- argc:指的是命令行中输入参数的个数
 
- argv:一个数组,它存储了所有的命令行参数
 

参数使用示例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | 
  #include<iostream> #include<stdio.h> using namespace std; int main(int argc,char **argv) { 	int i; 	for(i=0;i<argc;i++) 	{ 		printf("argv[%d]=%s\n",i,argv[i]); 	} 	return 0; }
 
  | 
 

含有可变形参的函数
initializer_list形参
- initializer_list是一种标准库类型,用于表示某种特定类型的值的数组
 
- initializer_list也是一种模板类型
 
- 支持size(),begin(),end()等操作
 
- 向initializer_list形参中传递一个值的序列,则必须把序列放在花括号中
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
   | #include<iostream> using namespace std;
 
  void print_1(initializer_list<string> str) {      	cout<<"parameter nums: "<<str.size()<<endl;
  	for(auto temp = str.begin();temp != str.end(); ++temp) 	{ 	    cout<<*temp<<endl;     }
      cout<<endl;      	for(auto beg : str) 	{ 		cout<<beg<<endl; 	} }
  int main() { 	const string a = "shansan"; 	string b = "yeshan333"; 	string c = "wocao";
  	     print_1({a,b,c});
  	return 0; }
   | 
 

函数返回值-----列表初始化返回值
- 函数可以返回花括号包围的值的列表
 
- 如果函数返回的是内置类型,则花括号包围的列表最多包含一个值,而且该值所占空间不应该大于目标类型的空间
 
- 如果函数返回的是类类型,由类本身定义初始值如何使用
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | #include<iostream> #include<vector> using namespace std;
  vector<string> process() { 	return {"shansan","yeshan333"}; }
  int main() { 	vector<string> v; 	v = process(); 	 	for(auto temp : v) 	{ 	    cout<<temp<<endl; 	} 	return 0; }
   | 
 

调试帮助,预定义跟踪调试
编译器为我们定义的
- func:存放当前调试函数的名字
 
- FILE:存放文件名的字符串字面值常量
 
- LINE:存放文件当前行号的整型字面值
 
- TIME:存放文件编译时间的字符串字面值常量
 
- DATE:存放文件编译日期的字符串字面值常量
 
