main:处理命令行
//main函数的两种定义形式
int main(int argc,char **argv[])
int main(int argc,char *argv[])
- argc:指的是命令行中输入参数的个数
- argv:一个数组,它存储了所有的命令行参数
参数使用示例子:
//file_name:test.cpp
//author:shansan
#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形参中传递一个值的序列,则必须把序列放在花括号中
#include<iostream>
using namespace std;
void print_1(initializer_list<string> str)
{
//遍历实参表列,使用initializer_list对象的成员begin和end进行遍历
cout<<"parameter nums: "<<str.size()<<endl;
for(auto temp = str.begin();temp != str.end(); ++temp)
{
cout<<*temp<<endl;
}
cout<<endl;
//用范围for语句遍历表列
for(auto beg : str)
{
cout<<beg<<endl;
}
}
int main()
{
const string a = "shansan";
string b = "yeshan333";
string c = "wocao";
//向initializer_list形参中传递一个值的序列需放在花括号内部
print_1({a,b,c});
return 0;
}
函数返回值—–列表初始化返回值
- 函数可以返回花括号包围的值的列表
- 如果函数返回的是内置类型,则花括号包围的列表最多包含一个值,而且该值所占空间不应该大于目标类型的空间
- 如果函数返回的是类类型,由类本身定义初始值如何使用
#include<iostream>
#include<vector>
using namespace std;
vector<string> process()
{
return {"shansan","yeshan333"};
}
int main()
{
vector<string> v;
v = process();
//遍历vector对象
for(auto temp : v)
{
cout<<temp<<endl;
}
return 0;
}
调试帮助,预定义跟踪调试
编译器为我们定义的
- func:存放当前调试函数的名字
- FILE:存放文件名的字符串字面值常量
- LINE:存放文件当前行号的整型字面值
- TIME:存放文件编译时间的字符串字面值常量
- DATE:存放文件编译日期的字符串字面值常量