局部变量:函数内部定义的变量
float fun(int a){
int b,c;
}
产生作用的范围紧紧限于函数内部
全局变量:函数之外定义的变量
int p=1,q=5;
int fun(int r){
r=p+q;
}
产生作用的范围在从定义位置开始到全部程序结束
最好写在#include <iostream>的后边
{
int b,c;
b=2;c=5;
int sum;
sum=b+c;
}
作用域:分为4种不同的作用域(1)文件作用域 (2)函数作用域 (3)块作用域 (4)函数原型作用域
存储期:就是生命周期
静态存储:程序运行期间分配固定的存储空间
全局变量
动态存储:程序运行期间分配自动的存储空间
动态分配的有(1)函数的形式参数 (2)函数中定义的变量 (3)函数调用时的现场保护和返回地址
自动变量:就是不加static的变量,而加auto
int fun(int a){
auto int b,c=3;
}
b和c 就是自动变量,为什么之前就没有,突然出现,因为你根部不需要写auto ,自动默认就是auto,就是可以省略
静态局部变量,无论局部还是全局,加上static 意义就不一样了
C++中的static声明的变量只能在本程序中调用。
看结果?
#include <iostream> using namespace std; int fun(int a){ auto int b=10; static int c=6; b+=3; c+=5; return a+b+c; } int main(){ int a=20; for(int i=0;i<3;i++){ cout<<fun(a)<<" -- "; } return 0; }
看结果?
#include <iostream> using namespace std; int fun(int a){ static int c=1; c*=a; return c; } int main(){ for(int i=1;i<6;i++){ cout<<i<<"!="<<fun(i)<<endl; } return 0; }
看结果?
#include <iostream> using namespace std; int fun(int a){ static int c=1; c*=a; return c; } int main(){ for(int i=1;i<6;i++){ cout<<i<<"!="<<fun(i)<<endl; } return 0; }