社区
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的作用分别是什么?
...全文
229
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.好处 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。 3.根本原因 根本原因是C语言中同一个工程中不能有同名函数。 定义静态函数的好处: 其他文件中可以定义相同名字的函数,不会发生冲突 静态函数不能被工程内其他文件所用。 拓展:关于内联函数 内联函数是在函数的前面加“inline”,意思
static
作用
(修饰函数、局部变量、全局变量)
C语言:
static
作用
(修饰函数、局部变量、全局变量) 一、
static
全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以
static
就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 这两者的区别在于非静态全局变量的
作用
域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变...
Java中
static
的
作用
详解_java中
static
作用
详解
static
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态
static
代码块,但是Java语言中没有全局变量的概念。被
static
修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,
static
对象可以在它的任何对象创建之前访问,无需引用任何...
static
作用
与用法
目录 一、
static
变量 二、
static
方法 三、
static
代码块 四、
static
class
static
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态
static
代码块,但是Java语言中没有全局变量的概念。被
static
修饰的成员变量和成员方法独立于该类的任何对象,也就是说,它不依赖类特定的实例,当声明它类的对象时,不生成
static
变量的副本,被类的所有...
static
作用
范围
static
作用
于 默认具有external 属性的标识符,则更改其链接属性为internal.
static
作用
于 默认具有none属性的标识符, 则更改其存储期为静态存储期。
static
作用
于其它类型的标识符,则无任何效果。
static
出现在全局变量的前面,其
作用
范围为(本文件内)
static
在局部变量的前面,说明该局部变量的储存类别为(?),可能是“无链接性的静态存储变量”
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章