社区
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的作用分别是什么?
...全文
245
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
打赏
举报
回复
在这里显得没啥用啊
static
作用
(
作用
范围,存储区域,生命周期)
static
作用
(修饰函数、局部变量、全局变量) 在C语言中,
static
的字面意思很容易把我们导入歧途,其实它的
作用
有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加
static
前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char
Java中
static
的
作用
详解_java中
static
作用
详解
static
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态
static
代码块,但是Java语言中没有全局变量的概念。被
static
修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,
static
对象可以在它的任何对象创建之前访问,无需引用任何...
static
作用
与用法
目录 一、
static
变量 二、
static
方法 三、
static
代码块 四、
static
class
static
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态
static
代码块,但是Java语言中没有全局变量的概念。被
static
修饰的成员变量和成员方法独立于该类的任何对象,也就是说,它不依赖类特定的实例,当声明它类的对象时,不生成
static
变量的副本,被类的所有...
static
作用
:静态变量的生存周期和
作用
域
首先要理解生存周期与
作用
域的区别: 生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的
作用
域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。
作用
域: 变量的可见代码域(块
作用
域,函数
作用
域,类
作用
域,程序全局
作用
域)。
static
变量是指静态的变量,不管是在全局还是局部声明的
static
变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是
static
变量的
作用
域并不等同于它的生存.
static
的三个
作用
static
作用
一、修饰局部变量-静态局部变量二、修饰全局变量-静态全局变量三、修饰函数-静态函数 一、修饰局部变量-静态局部变量 代码1: #include <stdio.h> void test(){ int i = 0; i++; printf("%d ", i); } int main() { int i = 0; for (i = 0; i < 10; i++){ test(); } system("pause"); return 0; } 代码2
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章