社区
C语言
帖子详情
static的作用
niehuawen
2012-08-22 10:32:20
//test c.cpp
#include<stdio.h>
#include "test.h"
void main()
{
print();
printf("%d",num);
}
//test.h
static int num=5; //第1处
static void print() //第2初
{
static int num=1;
printf("%d\n",num);
printf("%d\n",::num);
}
上述2处static的作用分别是什么?
...全文
230
16
打赏
收藏
static的作用
//test c.cpp #include #include "test.h" void main() { print(); printf("%d",num); } //test.h static int num=5; //第1处 static void print() //第2初 { static int num=1; printf("%d\n",num); printf("%d\n",::num); } 上述2处static的作用分别是什么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wizard_tiger
2012-08-24
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
第一处,防止全局变量被其他文件引用
第二处,防止函数被其他文件引用
[/Quote]
++
xiezhunben
2012-08-23
打赏
举报
回复
static 修饰数据为静态变量,所谓静态变量就是从开始定义起直到程序结束它都是存在内存中的,但是他还是一个变量,所以他还是有作用域!楼主定义了一个全局的static int num = 5; 这里定义的一个全局变量而在函数中有定义了一个 static int num = 1; 这个是局部变量,在函数中直接用num由于那么就是使用的 = 1 的这个num
加上全局域操作符::访问的就是全局变量num = 5。
franzhong
2012-08-23
打赏
举报
回复
除了存静态区,主要限定作用域
AnYidan
2012-08-23
打赏
举报
回复
这些名字只在本文件内可见
lin51616780
2012-08-23
打赏
举报
回复
发现LZ一个问题 不要用#include 处理*.cpp文件 很不专业 然后作用其实是把文件的内容写入另一个文件 汗
proorck6
2012-08-23
打赏
举报
回复
一个是静态变量,一个是静态函数。
dhdahai
2012-08-23
打赏
举报
回复
第一处,防止
全局变量
被其他文件引用
第二处,防止
函数
被其他文件引用
didijiji
2012-08-23
打赏
举报
回复
static用在外部是主要是防止其他文件引用。
static用在函数内部是只能初始化一次,并且函数调用结束后不会立即销毁。
ies_sweet
2012-08-23
打赏
举报
回复
第一个是全局的,静态区存储
第2个是局部的,也是静态区存储
不过因为2个变量名字冲突,局部的这个在局部将全局的屏蔽了
这是一个关于命名空间的问题吧
niceguy01
2012-08-23
打赏
举报
回复
你好笨啊,连static都不会他的作用如果是函数的话 ,别的文件就不能访问了,不管你另外的文件有没有实用extern,要是用在了变量上面的话 ,那么这个变量同样在其他的文件上无法使用了,并且这个变量仅仅只能被初始化一次哦
要是用在了类上面的你懂得,如果用在了成员变量上面的话,我相信你也懂得,如果把它放在了字符串“”之间他就是个abc而已。
不知道我讲明白了没有,反正我是懂了,你不懂我也没有法子
赵4老师
2012-08-23
打赏
举报
回复
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。
BYD123
2012-08-23
打赏
举报
回复
好吧啰嗦一下:
static关键字作用:
1)变量,如static int a,表示a是一个静态的变量,在程序编译时就确定初值为0,并放在未初始化的数据段里,在可执行文件里不占磁盘空间;如果是static int a = 1;//(非零值),a的数据放在已初始化的数据段里,并且在可执行文件里占用4字节的磁盘空间。
在程序运行时:a的内存空间是在栈里,如果它是全局的,任何函数可以访问,如果是局部的,只有定义它的函数
可以访问。不管哪种情形,a的作用域都只在本文件内。
2)函数,如static void func(...),表示func只能在本文件内使用,拒绝其它地方extern void func(...)后,再使用。
KingWolfOfSky
2012-08-22
打赏
举报
回复
static可以出现在函数或变量的声明中。
在函数定义中,它只用于指定函数名不被导出到链接器。
在函数声明中,它表示被声明的函数稍后将在这个文件中按照static存储类别进行定义。
在数据声明中,它总是表示一个不导出到链接器的定义声明。
声明为这个存储类别的变量具有静态范围(和auto所指定的局部范围正好相反)
羽飞
2012-08-22
打赏
举报
回复
函数中的静态变量不会因为函数返回而失效
羽飞
2012-08-22
打赏
举报
回复
static在cpp文件中可以防止变量或函数被其它文件引用
Gloveing
2012-08-22
打赏
举报
回复
在这里显得没啥用啊
c语言中
static
作用
c语言中
static
作用
1.
static
修饰局部变量。2.
static
修饰全局变量。3.
static
修饰函数。
【C语言】函数定义时前加
static
作用
C语言中函数定义时前加
static
作用
1.
作用
函数中加“
static
”的含义不是指存储方式,而是指对函数的
作用
域仅局限于本文件。 2.好处 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。 3.根本原因 根本原因是C语言中同一个工程中不能有同名函数。 定义静态函数的好处: 其他文件中可以定义相同名字的函数,不会发生冲突 静态函数不能被工程内其他文件所用。 拓展:关于内联函数 内联函数是在函数的前面加“inline”,意思
static
作用
(
作用
范围,存储区域,生命周期)
static
作用
(修饰函数、局部变量、全局变量) 在C语言中,
static
的字面意思很容易把我们导入歧途,其实它的
作用
有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加
static
前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char
Java中
static
的
作用
详解_java中
static
作用
详解
static
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态
static
代码块,但是Java语言中没有全局变量的概念。被
static
修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,
static
对象可以在它的任何对象创建之前访问,无需引用任何...
C语言中
static
作用
1,
static
修饰局部变量 在局部变量之前加上关键字
static
,局部变量就被定义成为一个局部静态变量。 特点如下: 1)存储区:由于栈变为静态存储区rw data,生存期为整个源程序,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它;当
static
修饰局部变量时,可以达到改变局部变量生命周期的目的. 2)
作用
域:
作用
域仍为局部
作用
域,当定义它的函数或者语句块结束的时候,
作用
域随之结束。 void test() {
static
...
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章