华为交换机的配置命令:自动变量 在编程中的作用?

来源:百度文库 编辑:高校问答 时间:2024/05/08 20:15:35
C++中 自动变量 在编程之中起什么 作用 麻烦 举一个超级简单的例子 (本人是初学者)

谢谢

自动变量声明
关键字auto用来声明自动变量,被声明的变量可以省略标识符auto(关键字只是编译器内特定的标识符)。如下:
auto int a; (自动变量)
char b; (自动变量缺省形式)
C++中,自动变量的作用域(变量的值在程序内部的活动范围)仅仅是该变量所在程序块或该程序块内部的程序块。
说明自动变量的作用域的例子:
#include <iostream.h>
main()
{
int i; (缺省的自动变量)
int j;
cout<<" i in outer block is"<<i<<"\n";
cout<<" j in outer block is"<<j<<"\n";
cout<<" k in outer block is"<<k<<"\n";
{ (可以看到,从这里开始为内部程序块)
int k; (缺省的自动变量)
cout<<" i in inner block is"<<i<<"\n";
cout<<" j in inner block is"<<j<<"\n";
cout<<" k in inner block is"<<k<<"\n";
} (回到外部程序块)
cout<<" i back in outer block is"<<i<<"\n";
cout<<" j back in outer block is"<<j<<"\n";
cout<<" k back in outer block is"<<k<<"\n";
}
(可以看到int表达出来的数据类型是多种多样的,编译器可能对int的数据做自动辨识,而{}的位置可以看出代码处于哪个程序块,而main则是最大的。)
编译后会得到如下错误信息:
Error:Undefined symbol 'k' in function main()
Error:Undefined symbol 'k' in function main()
这是因为变量k为自动变量,它在内部的程序块中声明,所以只能在内部的程序块中存在和存取,在外部的程序块中,编译器不知道k的值 (在外部程序块中,超出了k的作用域)。
改正方法:只要删除在内部程序快中对k的声明,而在外部的程序块中声明k即可。
于是得到输出结果:
i in outer block is 8886
j in outer block is 18
k in outer block is 0
i in inner block is 8886
j in inner block is 18
k in inner block is 0
i back in outer block is 8886
j back in outer block is 18
l back in outer block is 0
那么,i、j、k中的值是哪里来的呢?
在C++中,自动变量如果没在它本身的作用域内初始化,那么该变量就

可能包含随机的无用的信息值,假设变量i、j、k的初始声明如下:
int i=1;
int j=2;
int k=3;
初始结果则就是:
i in outer block is 1
j in outer block is 2
k in outer block is 3
i in inner block is 1
j in inner block is 2
k in inner block is 3
i back in outer block is 1
j back in outer block is 2
l back in outer block is 3
编译成功。

int n;
int sum=0;
cin>>n;
for(int a=1,a<=n,a++);
sum=sum+a;
cou<<sum<<endl;
阶乘N!