C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 04:01:01
C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?

C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?
C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?

C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?
可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量.所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量.
先说静态局部变量:通常情况下,在一个函数中定义一个变量,那么函数退出之后,这个变量就消失了,即使你第二次调用这个函数,里面的变量也会被重新赋初值.比如我们写一个函数:
int fun(int a)
{int sum;
sum=sum+a;
return sum;}
这样无论你是第几次调用fun这个函数,sum都会重新被赋初值,也就是函数的返回值一直会是a;而不会出现多次调用累加的情况.
但如果你在一个函数中,用static来声明变量,那么这个变量虽然在函数外部不可用,但退出函数时,这个变量是不会消失的,下一次再调用这个函数,里面的值仍然存在.就说上面这个函数,如果你的第一句写成static int sum;那么你第一次调用fun(3);函数返回3,第二次再调用fun(5);函数返回值是8,因为第一次调用之后的sum=3的值不会消失.
另一种是静态全局变量.因为是全局变量,不存在退出函数消不消失的问题.所以静态全局变量和普通全局变量的区别是:普通全局变量在其他源文件中可以通过extern全局变量名的声明,来使用该变量,而静态全局变量只能在变量所在的文件中使用,即使你在其他文件中使用extern声明也不可以使用,这样可以有效避免不同文件全局变量的冲突.

C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗? 在C语言中,在一个子函数中定义的static型变量可以应用在其他函数中么? static这个函数这个函数在C语言中是什么意思,有哪些运用? 在C语言中static有什么含义 C++、java中,static都可修饰一个函数,它们的作用相同吗?在C++、java中,是不是某个类中的某个方法,如果用static修饰了,那么直接可以用类名来调用该方法,而不用实例化?这两种语言的static作用是不 急!高分!请帮我用C语言STATIC函数编一个简单程序要求:使用STATIC函数.形成A line,B line两个函数.在两个函数上用RAND函数形成1~10RAND值10次.两个函数形成的RAND值积累起来.A line有积累效果B line没 C语言(指针):编写一个函数实现n*n矩阵转置.在主函数中用scanf输入矩阵元素;将数组名作为函数实参. 在一个函数中定义一个变量为static int,是什么意思? C语言如何在子函数中对主函数中的二维数组值进行修改?二维数组已经在主函数中用动态数组分配了空间. c语言中用函数来求球的全面积和体积. 1.数学表达式为-3,C语言的表达式为?2.声明一个具有全局作用域的外部函数,需要使用的关键字是static还是extern C语言:可以在一个函数中定义另一个函数为什么不对? C语言中,我想在一个函数里用另一个函数的变量怎么办? 急,请问一个C语言问题主函数调用子函数时,比如在子函数中生成的临时变量当子函数调用完时它也就销毁了,但是像生成链表这样的例子,在子函数中用malloc函数新开辟一段空间然后再把它们 在ADS中新建一个项目,包含两个文件:main.c和sort.s.Main.c文件中用C语言定义一个二维整数型数组并初始化,然后调用asmsort.s中的函数.asmsort.s文件用汇编语言实现对Main.c文件中的数组进行从小到 二、 将一个3×3的矩阵转置,用一函数实现.在一主函数中用scanf函数输入以下矩阵元素:1 3 5 7 9 1C语言程序求助 C语言中由Static 定义的变量的作用范围 在C语言中,若有定义:static int x[2][3]={2,3,4,5,6,7},则表达式*x[1]的值为多少