1、auto 可以根据对变量的赋值内容来决定变量的数据类型。
auto a=1;// 表示 int
2、函数 func 中的 static 保持局部变量 i 在函数间传递时值不会被重新初始化。即保留了局部变量的值。
#include
// 函数声明
void func(void);
staticint count =10;/* 全局变量 */
int main()
{
while(count--)
{
func();
}
return0;
}
// 函数定义
void func(void)
{
staticint i =5;// 局部静态变量
i++;
std::cout <<"变量 i 为 "<< i ;
std::cout <<" , 变量 count 为 "<< count << std::endl;
}
输出结果:
变量 i 为6,变量 count 为9
变量 i 为7,变量 count 为8
变量 i 为8,变量 count 为7
变量 i 为9,变量 count 为6
变量 i 为10,变量 count 为5
变量 i 为11,变量 count 为4
变量 i 为12,变量 count 为3
变量 i 为13,变量 count 为2
变量 i 为14,变量 count 为1
变量 i 为15,变量 count 为0
假如 func 里面的 i 不是 static:
#include
// 函数声明
void func(void);
staticint count =10;/* 全局变量 */
int main()
{
while(count--)
{
func();
}
return0;
}
// 函数定义
void func(void)
{
int i =5;// 局部非静态变量
i++;
std::cout <<"变量 i 为 "<< i ;
std::cout <<" , 变量 count 为 "<< count << std::endl;
}
输出结果:
变量 i 为6,变量 count 为9
变量 i 为6,变量 count 为8
变量 i 为6,变量 count 为7
变量 i 为6,变量 count 为6
变量 i 为6,变量 count 为5
变量 i 为6,变量 count 为4
变量 i 为6,变量 count 为3
变量 i 为6,变量 count 为2
变量 i 为6,变量 count 为1
变量 i 为6,变量 count 为0
主函数每次调用 func 函数,i 的值都被初始化为 5,因此执行 10 次的 i 的值都是 5+1=6。