当前位置:首页 » 编程语言 » c语言静态变量

c语言静态变量

发布时间: 2022-01-10 09:12:20

‘壹’ 关于c语言static变量

函数中定义的static存储型变量的地址被返回后,在主调函数中通过指针操作该变量是合法的,以下代码可以验证:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
int*f(void){
statica=1;
return&++a;
}
intmain(void){
int*p=f();
printf("%d ",*p);
*p=7;
printf("%d ",*p);
printf("%d ",*f());
return0;
}

输出是:

2

7

8

说明很正常。

‘贰’ 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(){......}完全等价

‘叁’ c语言中静态变量是怎么用的

c语言中静态变量作常量使用,用于存储常数。可用const,constant或final等关键字标识,其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区。

对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。

(3)c语言静态变量扩展阅读:

在函数内以static声明的静态局部变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。

一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。

‘肆’ C语言静态变量的问题

静态变量不是不能变的,而是它在内存中不释放,你用的时候还是上次用完是的值;它能改变,赋值后就有了新的值。

‘伍’ C语言中的静态变量

  1. 用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的。

  2. 几个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);
    }

  3. 开始在稿纸上分析。


‘陆’ C语言静态变量

静态外部变量只限于本文件范围内有效,不能被其他文件引用。静态局部变量只能被定义变量所在的函数引用,且每次调用此函数结束时静态局部变量值保留,作为下次调用此函数时该变量的初值。c基础很重要,请认真研读

‘柒’ C语言里面静态变量static是什么作用啊

static关键字在C语言中用于声明一个静态的局部变量。
作用:
有时希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。

用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,因此若非必要,不要多用静态局部变量。

‘捌’ c语言,静态变量相关

被static定义的变量属于静态变量,之后即使再次定义都对其无效,所以它的值不会因为再次定义而重置值,所以再此题中就相当于就是在求1+2+3+4+5+6的和,故选B。

‘玖’ C语言中静态变量与动态变量的定义与区别

动态变量和静态变量定义和区别如下:
1、定义上,静态变量比动态变量多一个关键字static,比如:
动态变量:int i;
静态变量:static int i;
2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:
main()
{
int i;
for(i=0;i<5;i++)fun();//fun1();
}
void fun() //输出结果为11111
{
int j;
j++;
printf("%d",j);
}

void fun1() //输出结果为12345
{
static int j;
j++;
printf("%d",j);
}

‘拾’ 有关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

热点内容
安卓系统中哪个软件最耗电 发布:2024-12-25 08:38:44 浏览:824
ssrssql 发布:2024-12-25 08:38:41 浏览:953
ai定位脚本 发布:2024-12-25 08:33:35 浏览:956
炎黄解说我的世界中国服务器 发布:2024-12-25 08:33:28 浏览:796
sql2008发布 发布:2024-12-25 08:27:09 浏览:342
如何用存档开服务器 发布:2024-12-25 08:23:27 浏览:713
安卓手机为什么不显示通知栏 发布:2024-12-25 08:21:15 浏览:906
解压肚子疼 发布:2024-12-25 08:15:01 浏览:589
安卓怎么屏幕不灭 发布:2024-12-25 08:05:55 浏览:966
低配置手机怎么开使命高帧率 发布:2024-12-25 07:53:38 浏览:389