社区
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的作用分别是什么?
...全文
284
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写文章
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
修饰全局变量 当同时编译多个文件时,所有未加
static
前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。 未加
static
的全局变量,在符号表中是global符号,其他目标文件可见,这样的符号是要参与符号解析的。加了
static
之后,是local符号,其他目标文件不可见,只在当前文件中可见,不参与符号解析过程。所以多个源文件可以定义...
C 语言中
static
的
作用
C 语言中
static
的
作用
static
有什么
作用
常用的有:
static
作用
C程序一直由下列部分组成:
1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章