任务代码:
外部变量:(用extern声明外部变量:一个文件内的全局变量)
#include <stdio.h>
int max(int,int);
int main( )
{
extern int a,b; //对全局变量a,b作提前引用声明
printf("%d\n", max(a,b));
return 0;
}
int a=15,b=-7; //定义全局变量a,b
int max(int x,int y)
{
int z;
z=x>y?x:y;
return z;
}
静态变量和自动变量:
#include <stdio.h>
int f(int a)
{
auto int b=0;
static int c=3;
b=b+1;
c=c+1;
return a+b+c;
}
int main( )
{
int a=2,i;
for(i=0; i<3; i++)
printf("%d ", f(a));
printf("\n");
return 0;
}
静态变量运用:(程序计数器)
#include <stdio.h>
int count_calls()
{
static int ctr=0;
return ++ctr;
}
int main( )
{
int i;
for(i=0; i<10; i++)
printf("%d\n", count_calls());
return 0;
}
关于静态变量初始化:
#include<stdio.h>
void add()
{
int x=0;
static int y=0;
printf("%d,%d\n",x,y); //0,0,0,2,注意第二次虽然在此命名静态变量y=0,但是上一次执行完的y不会被重新初始化!
x++;
y=y+2;
}
int main()
{
int i;
for(i=0; i<2; i++)
add();
return 0;
}
执行情况:
执行1:
执行 2:
执行3:
知识总结:
由此引出4种存储类别变量:
自动变量:
寄存器变量:
寄存器是cpu的重要组成部分,英语叫cache,是一个运算速率快但是存储空间小的内存。起作用主要用于高速数据缓存交换到运算器和ROM中
因此,寄存器变量用于设置一段程序中重复大量使用的变量;有利于是程序加速!
外部变量:
当变量声明位置不在函数之前的时候,想被之前的函数调用,那就需要用外部变量来声明如下:
静态局部变量:(性质如下)
!!当处于函数里面的变量如果设值为静态局部变量,该变量在函数调用结束后不会内存释放吗,会保留!!!!!