c访问静态变量
A. c语言的中静态变量
前面的答案都是错的,正确的答案应该为
i=10,,j=1 解释: 首先你要明确什么是静态定义static你理解“静态变量只接受第一次赋值”说明你对static还有一点认知,但是不完全正确 本题的关键在于
“静态全局变量
j
的定义”
还有你对
“赋初值”的理解 由于“如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0”因此
static
int
j;
和
static
int
j=0;是完全等价的这样
函数f2定义中的
j=0;只是纯粹的赋值,则无论是第一次循环还是第10次循环,j=0;语句都不是一个初始化的语句,这点需要明确 我想你只要弄明白这点,本题的答案是怎样得来的你就完全清楚了,你主要是对static的理解不完整而已 附带一提,定义和声明函数时,如果参数类型为空可以省略即void
f1(void){......}void
f2(void){......}中的void是完全多余的,它和void
f1(){......}void
f2(){......}完全等价
B. C语言中静态局部变量的问题
静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值(也就是说,如果item是static的,那么只有在第一次进入这个函数的时候会执行item=0,以后都不会执行。)。
C. 关于 C语言 static变量访问的问题
static限制了此变量在其他文件中的作用,只在本文件里面使用,如果在函数里定义,则只能在函数里面使用。在main所在的文件中,main函数调用的是r()指针函数,但是a是r()调用的,也就是r()在a所定义的文件里面掉用a而已。也就是从头到尾,也只有r()这个指针函数调用了a,并不是main调用a的。
D. C++类中静态对象成员的访问!
类其实是个模型。
而对象就是找个这个模型制作的实体。
比如,类是造车的图纸,对象就是找个图纸造出的汽车。
类的成员是分级别的:protect,public,private。
在类内部定义的函数可以访问任何一个变量,或者调用任何的类内部的函数,但是,如果被定义成private的话,对象是不能调用的,也就是对象只能调用定义为public的数据,如果你确实需要调用某个private的变量,你可以定义一个public的函数来返回这个变量,比如:
class
d
{
private:
int
a;
public:
int
getint(){return
a;}
......
}
这里你的对象不能调用a的,
也就是不能
int
b;
d
d;//假设已经写好了构造函数
b=d.a;//这是错误的,
但是你可以
b=d.getint();
这样就可以把a的值给b了。
所有的public的函数都可以通过
<对象>.<函数名>
的方式来调用
E. C语言中函数内部声明的静态变量的在函数外可以访问吗
不可以
只有全局变量才可以
静态变量,只是里面的值不会因为函数调用结束而还原
F. c语言中静态变量是怎么用的
#include"stdio.h"
void
main()
{
int
f(int);
int
a=2,i;
for(i=0;i<3;i++)
printf("%d
",f(a));
}
int
f(int
a)
{
auto
int
b=0;
//aubo为自动变量的标志,则b为自动变量
static
int
c=3;//static
为静态局部变量的标志,则c为静态局部变量
b=b+1;
//b为自动变量,则b一直等于1
c=c+1;
//c为静态局部变量,则c随着for循环分别为4,5,6
return(a+b+c);
}
所以运行的结果为:7,8,9
注:静态局部变量(静态变量)是在编译时赋初值的,即值赋初值一次,在程序运行时它已有初值,以后每次调用函数式不在重复赋初值而只在保留商城函数调用结束时的值。
G. C语言中的静态变量
用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的。
几个a并不是同一个a,我们可以把程序中的a改一下名字,方便理解。如下:
#include <stdio.h>
int fun(int n)
{
static int a =3;
int t =0;
if(n%2)
{
static int b =4;
t+=b++;
}
else
{static int c =5;
t+=c++;
}
return t+=a++;
}
main()
{
int i,s=0;
for (i=0;i<3;i++)
s+=fun(i);
printf ("%d ",s);
}开始在稿纸上分析。
H. 有关c语言函数静态变量
静态变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,
而且保存了前次被调用后留下的值。
第一个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是200;
x++;
y++;
k++;
x=2,y=11,k=201;
所以第一次打印是214
第二个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是300;
x++;
y++;
k++;
x=2,y=12,k=301;(y是静态变量,原值不变)
所以第二次打印是315
第三个printf(
"%d\n",
func(k+=100)
);
k+=100,k就是400;
x++;
y++;
k++;
x=2,y=13,k=401;(y是静态变量,原值不变)
所以第二次打印是416