㈠ 函数内的局部静态变量为什么在其他函数内无法访问
除非调用这个函数,否则函数内的什么变量在其他函数内都无法访问。你的意思可能是认为“静态变量是永久性的,所以在其他函数内应该可以访问”,但事实是函数内的静态变量也是“局部”变量,所以它只能在声明它的函数内部可见。
㈡ c语言编程 局部变量 foo函数返回之后它的栈帧就要释放掉 它的地址就没有了啊,为什么还能打印出来
同学你好!我以前也研究过你这个问题,在自定义函数里申请变量,返回他的地址。按照道理说局部变量离开了他的作用域,将不能再被访问,意思是他的变量名失去了他的意义,那么变量里的值还在不在了呢?在没有加static的情况下,局部变量保存在动态存储区,如果这个区域暂时没有写入其他的值,原来变量的值还是保留在那里的,比如你保留了他的地址就还有可能访问到那片空间,但这并非绝对。我经过多次的研究发现,即使保留了不在作用域内局部变量的地址,也有可能访问不到他原来的值,而且你在编译的时候编译器会给出一个warning,那么我最后得出的结论是,这样返回局部变量的地址是不安全的(有可能值还没被覆盖掉还在那里,有可能就没有了)。建议还是不要这么做!
㈢ 请教高手,C语言中,把变量定义在主函数之外和定义在主函数之内有什么区别
两者的区别只在于作用域和生存周期。main函数是一个进程的入口,此外,和别的函数无区别。
1、main函数里定义的是局部变量,只是在main函数里有效。
2、如果程序里有多个函数,定义的全局变量在这些函数里都可以使用,而在main中定义的只能在main中使用,其他函数不可以直接调用。
3、题目中的两个程序的区别只在于程序一的a和s变量是全局变量,程序二的a和s变量是局部变量。
4、全局变量是程序的各个函数都可以调用的,而局部变量只在函数内部有效。
(3)其他函数可以访问局部变量吗扩展阅读:
全局变量是编程术语中的一种,源自于变量之分。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量。
面向对象编程是现在普遍采用的是软件开发方法,因此无需考虑是局部变量还是全局变量,说到变量,往往都是局部变量。
㈣ 在js中局部函数可以访问外部函数的局部变量吗
很简单,你不需要在函数里面申明一个局部变量,直接申请static变量。这个是静态文件作用域变量。任何函数都可以访问。但是你必须要写到所有函数外部定义。很简单的事,不要太复杂化
㈤ C#中被调用函数能访问并修改调用它的函数局部变量吗,用什么方法可以实现
publicvoidf1()
{
stringstr1="a";
stringstr2=f2(outstr1);
}
publicstringf2(outstringstr)
{
str="b";
return"c";
//在这里可以修改str1的值吗,有什么方法
}
//如上代码,这时候,str1会修改成b
㈥ C++中将一变量在一函数中定义为局部静态变量,可以再把这个变量在主函数中定义为动态变量吗它的值在
不可以。C++的作用域从来没有听说过能够后期更改的,变量的作用域在声明的时候就已经确定,你只能更改它的值,却不能更改它的作用域。下面举个例子理解局部静态变量和动态变量:
1.首先理解局部静态变量:局部静态变量只初始化一次,该局部静态变量生命周期贯穿函数(该声明所在)调用之后的时间。为了更加清楚,举个例子,右边为运行结果
注意事项:
不管是什么类型的变量,我们都得注意它的作用域,以及它初始化几次,不然会在这种小地方犯错,导致整个项目有问题,而且排查起来很烦人。
㈦ 闭包内层函数可以将外层函数的局部变量进行封装,封闭后就只有内层函数才能访问到外层函数的局部变量吗
js的函数可以当作像object, array之类的类型一样作为变量的值使用, 如果在一个函数里创建另外一个函数并且内部的函数使用到了外面的函数的变量那么就构成一个闭包, 这个外面的函数的变量的值会为闭包的函数一直保存直到闭包函数被内存回收掉为止
用处有很多, 熟悉之后基本是要用到自然就会去用了. 有很多时候闭包的变量是当作c里static变量使用或者只是为了当个namespace避免全局命名空间被污染, 例如
varcount=(function(){
varnum=1;
returnfunction(){returnnum++;};
})();
相当于
varnum=1;
functioncount(){returnnum++;}
不直接用第二种只是为了防止var num被直接加到window里
㈧ 局部变量的作用域可用于其它函数的调用 这句话是否是对的,为什么
这句话不准确,如果在main函数里面定义的变量在main函数的作用范围里可以传递给其他函数,如果在除主函数的其他函数的里的局部变量会随着函数的结束而释放空间,所以不能再供别的函数传递参数。而main函数的局部变量时程序运行完后才释放空间的,程序运行完钱可以传递给其他函数
㈨ 在课本上看到这么句话:主函数中定义的局部变量只能在主函数中使用,其他函数不能使用。那么主函数中定义
"主函数中定义的局部变量只能在主函数中使用,其他函数不能使用。"
这句话有不妥
如当 形参是 引用类型时,其他函数则可以访问实参
#include<stdio.h>
voidfun(int&a){
a++;
}
voidmain(){
intn=12;
fun(n);
printf("%d ",n);
getchar();
}
输入结果 是13
㈩ 关于是否一个函数内声明的局部变量能被另一个函数访问
首先,变量是有作用范围和生命周期的,这个你需要明确。
类成员变量:
作用范围,通过关键字来实现,public、private。。。
生命周期,该类被加载实例化后--该类结束
方法成员变量:
作用范围,该方法内部
生命周期,随着方法的生命周期
故此,一个函数的变量是否可以被另外一个函数使用,得看该变量的具体范围和生命周期