关键字,作用域
1、修饰局部变量:
1.1、static对局部变量的作用;修饰的变量,只有你的包含那个变量定义的源代码文件可以访问,内部变量
static对局部变量的作用:
1)延长局部变量的生命周期,从程序启动到程序退出,但是它并没有改变变量的作用域
2)定义变量的代码在整个程序运行期间仅仅会执行一次;
void sum(){
int num=0;//局部变量存放在栈区;
printf("%d\n",num);
num++;
}
void sum1(){
static int num=0;//初始化的静态变量在数据区存放;没有释放
printf("%d\n",num);
num++;
}
int main(int argc, const char * argv[]) {
// insert code here...
sum1();
sum1();
sum1();
1.2、extern只要声明就可以访问,外部变量;
extern不能够修饰局部变量;
2、修饰全局变量:
1)static作用;内部变量
只能为源文件内部函数使用;不能声明用于其他文件
static int num=10;
sum();//10
printf("%d\n",num);//0
在不同的文件中,使用static可以声明同名变量;
2)extern:外部变量
可以在本文件中使用,可以用于外部文件,只要声明;
extern int num1=20;
printf("%d\n",num1);//20
在不同的文件中且文件之间有连接,extern不能声明同名变量;
可以在使用之前在函数内部和外部进行声明,如果是全局声明可以省略extern;
不能声明不存在的变量;全局变量默认初始化0;
3、修饰函数;
内部函数,只在文件内部访问
外部函数,可以在文件外面声明访问
1)static修饰的函数为内部函数,只能在定义的文件中使用;可以间接访问。
2)extern修饰的函数为外部函数,系统默认的就是extern修饰,可以省略;
可以在使用之前在函数内部和外部进行声明,如果是全局声明可以省略extern; |
|