社区
C语言
帖子详情
作为全局变量,static int a和int a是一样的吗?????
CCjiajia101
2004-12-11 04:35:41
虽然第一个是静态,但作为全局变量是一样的吗?在不同地方可有不同的作用?在非主函数的体内定义不讨论
...全文
2383
21
打赏
收藏
作为全局变量,static int a和int a是一样的吗?????
虽然第一个是静态,但作为全局变量是一样的吗?在不同地方可有不同的作用?在非主函数的体内定义不讨论
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sanco
2004-12-14
打赏
举报
回复
静态存储区 和 全局数据区 是一个数据区吧。
只是分为初始化的 和未初始化的。
lovessm
2004-12-13
打赏
举报
回复
给个测试程序:
/* test1.h */
#ifndef __TEST1_H__
#define __TEST1_H__
int a; /* 临时定义,并未真正分配空间 */
void test1();
#endif
/* test1.c */
#include "test1.h"
void test1()
{
printf("a in test1.c: %d\n",a);
}
/* test2.h */
#ifndef __TEST2_H__
#define __TEST2_H__
int a; /* 临时定义 */
void test2();
#endif
/* test2.c */
#include "test2.h"
void test2()
{
printf("a in test2.c: %d\n",a);
}
/* main.c */
#include "test1.h"
#include "test2.h"
int a=1; /* 真正定义,分配了真正的存储空间,并进行了初始化 */
int main()
{
test1();
test2();
return 0;
}
/* 运行结果 */
a in test1.c: 1
a in test2.c: 1
/* 补充要说的 */
如果到最后还是没发现变量的真正定义,那么就会选择“最后”一个作为真正定义。
lovessm
2004-12-13
打赏
举报
回复
你给每个加上static,限制变量的可视区为本文件域!
Popo_CN(Popo_CN) 说的有问题,你的程序就算不加static编译也是通过的,原因再于一个“临时定义”的概念,即多个变量声明,如果都不赋初值,那么这些只能算是临时的定义,因此不管你临时定义多少次,都是不会冲突的。
daikaiming
2004-12-12
打赏
举报
回复
同意上面的意见!!!
yangfasheng
2004-12-12
打赏
举报
回复
Microsnow(冰火) ( ) 信誉:100
=======================
说得不错!
Popo_CN
2004-12-12
打赏
举报
回复
Static 为文件级
test1.c
int a;
void test1(){
printf("%d\n",a);
}
test2.c
int a;
void test2(){
printf("%d\n",a);
}
maintest.c
#include "test1.h"
#include "test2.h"
int main(){
;
}
编译时候会报错。加上static 问题解决
peng22277
2004-12-12
打赏
举报
回复
静态存储区vs全局数据区???
lovessm
2004-12-12
打赏
举报
回复
1、影响作用域
static int i; /* i只在本文件中可见,即你不能通过extern引用 */
int i; /* i可在别的文件中通过extern引用 */
2、影响存储的区域
static int i; /* 编译器在编译时,会将其存储在静态存储区 /
int i; /* 会存储在全局数据区 */
但是,二者在编译时,如果不明写初始化,编译器会自动把二者初始化为0,这点二者相同。
bingbing1981
2004-12-12
打赏
举报
回复
不一样
时间同
空间不同
sharkhuang
2004-12-12
打赏
举报
回复
不一样的!static还有限制变量的作用范围。所以你能看到很多这样的定义
#define LOCAL static
fanlord
2004-12-11
打赏
举报
回复
static用在函数内,可使静态变量局部化。
anncanm
2004-12-11
打赏
举报
回复
static int a 如果在非主函数中,生存周期是整个程序吧!在一次调用的时候它的值还是存在!
在外部static int a ;和int a ; 是一样的,全局变量默认为static 的,好象是这样,我这么理解的!
flyingsnow1999
2004-12-11
打赏
举报
回复
同意楼上
greenteanet
2004-12-11
打赏
举报
回复
引用:
static int a只被本文件可见,外部文件不可见;而int a如果在外部文件作以下声明: extern int a,那么它在声明的文件里也是可见的.
wen167
2004-12-11
打赏
举报
回复
如果缺省的全局变量,系统会认为是extern int a,?此为愚弟意见
idler
2004-12-11
打赏
举报
回复
ah,冰火兄正解,C语言好基础
wen167
2004-12-11
打赏
举报
回复
同意冰火老兄
melonliu
2004-12-11
打赏
举报
回复
冰火正确!影响作用域
Joe
2004-12-11
打赏
举报
回复
static int a只被本文件可见,外部文件不可见;而int a如果在外部文件作以下声明: extern int a,那么它在声明的文件里也是可见的.
「已注销」
2004-12-11
打赏
举报
回复
个人认为是一样的,生存期一样。
加载更多回复(1)
c语言中,
static
局部变量和
static
全局变量
static
全局变量
和
static
局部变量的存储区域和作用域
static
int
与
int
的区别
所以和我概念一样模糊的少年们,不妨看一下下面几段代码,看了就能理解
static
int
和
int
的区别: code 1: #include
int
a=0;//这里
int
在函数外,为
全局变量
int
add(){ pr
int
f("%d",a++); return 0;}
int
main(){...
static
全局变量
和 非
static
全局变量
的区别
全局变量
(外部变量)的说明之前再冠以
static
就构成了静态的
全局变量
。
全局变量
本身就是静态存储方式,静态
全局变量
当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态
全局变量
的作用域是...
C++
static
关键字 总结/
static
全局变量
和
全局变量
的区别
首先了解一下内存的分布图: 代码区 全局数据区 堆区 栈区 代码区:存储代码 全局数据区:
static
数据,
全局变量
, const常量 堆区:由程序员自己new出来的动态数据, 需要手动释放。...首先总结
static
全局变量
...
static
作用(修饰函数、局部变量、
全局变量
)
C语言:
static
作用(修饰函数、局部变量、
全局变量
) 一、
static
全局变量
与普通的
全局变量
有什么区别 ?
全局变量
(外部变量)的说明之前再冠以
static
就构成了静态的
全局变量
。
全局变量
本身就是静态存储方式, ...
C语言
70,023
社区成员
243,260
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章