c语言中staticint(C语言中static变量)
c语言中statuc int i=1什么意思
static int i=1; //表示定义一个静态变量i
当i是个局部变量时,表示这个变量的生存期为整体程序的运行期,就相当于是个全局变量,区别只在于,静态局部变量是在函数体内进行初始化,如上面的int i=1;这个初始化,只在函数第一次调用时进行,当第二次调用这个函数时,这一句就不会再执行了,i就直接使用上一次的残余值了。
c语言中static int i=1什么意思
这个要看两种情况的:
这个语句是放在函数内,那么这就是一个静态局部变量,当函数结束内存不释放,它的生命周期等同全局变量;
这个语句放在函数歪,那么表示这个是一个不可跨文件的全局变量,这个变量不可以被其余的源程序文件extern。

计算机c语言中 static int a=1;什么意思
static 是定义静态变量用的,在程序执行中他只会被初始化一次
比如程序运行过程中a的值被改变后,又执行到static int a=1,这句,此时这句将不会被执行,a不会第二次被初始化。如果是动态变量,int a=1,此时a便会被重新赋值为1
关于此处的static int C语言高手进!!
这问题有点深了,大概讲一下,看你能不能听懂吧:
首先,如果正规来讲,k开10肯定是不够的,比如120的因数有
1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120,个数已经超过10了,因为如果不采用static声明,编译器将把k当作局部变量来对待,为其在栈上分配内存空间,那么当n=10时,程序对内存的访问会出现错误的,因为程序得不到正确结果。
但是,如果采用了static声明,编译器将把k作为静态局部变量,对于静态变量,编译器将在"静态区"为其分配空间。实际上,静态区和堆类似,其地址空间也是向上的,对于k[n]这样的数组,编译器实际只是标记了一个数组的首地址,而只要n的大小是运行环境也能接受的,编译器就不会报错,而在实际执行过程中,当你使用的地址长度超过预计的分配长度时,程序也不会出错,但是如果程序使用的内存对运行环境造成了破坏,程序甚至文件系统就会崩溃……扯远了~~
总结一下,就是static数组在编译期间只分配首地址,运行期间不动态检查下标是否越界。所以对于这个小程序而言,声明为static程序依然能得出正确结果~~
——————————————————————
计算第一和第二组的时候并没有越界,到120的时候才有越界的情况发生,在这之后才会出现错误。