C语言变量储存问题?

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:04:02
#include<stdio.h>
#include<conio.h>
void main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{printf("\40:the num equal %d \n",num);
num++;
{static int num=1;
printf("\40:the internal bloctk num equal %d\n",num);
num++;
}
}
getch();
}
这个里面的int num;和static int num=1;这个变量名是一样。为什么输出来的值不一样,局部变量我理解指的是函数内的变量,这两个都是啊,作用区不会被覆盖吗?为什么它们的值还会不同?

static int num=1; 静态局部变量,由于是静态的,系统会给他分配一个空间,这个空间只有在程序运行结束才会被释放,num=2; 这个只是在主函数里有效,对{}里的不产生影响,去看看书上局部变量吧

static int num=1; 静态变量的初始化只进行一次
int num=1;动态变量的初始化可以进行多次

static int num=1; 静态变量的初始化只进行一次 ,再初始化就无效!
int num=1;动态变量的初始化可以进行多次 ,赋值一次改一次值!