全局变量 定义在 main函数 内和外 有什莫区别

seaandsunandsky 2007-08-16 10:10:34
如题
...全文
3097 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
scream7 2012-04-28
  • 打赏
  • 举报
回复 1
main也只是一个普通函数,只是是有系统来调用它,所以在main里的也是局部变量.
wszzfzsc 2012-04-27
  • 打赏
  • 举报
回复
你去看看书,就知道啦
datamining2005 2012-04-27
  • 打赏
  • 举报
回复
楼主应该说的是 main外面定义 ,main里面使用吧
Ever_lover 2012-04-26
  • 打赏
  • 举报
回复
不要把main函数想的那么神器。。。他和其他的函数一样,只不过他是系统的一个接口。。。和其他函数是main函数的接口一样。。。在main函数定义和在fun()中定义一样都只能在这个函数体中使用
sky198306 2012-04-26
  • 打赏
  • 举报
回复
路过学习一下呵呵~
二进制浮游 2012-04-26
  • 打赏
  • 举报
回复
受教育!!
linuxyuking 2007-08-17
  • 打赏
  • 举报
回复
在任何函数之外 包括main
littlexidong 2007-08-17
  • 打赏
  • 举报
回复
楼主多看看C语言的书吧~~~~
luojinzhong2002 2007-08-16
  • 打赏
  • 举报
回复
在main()汉书外定义的全局变量,可以在子函数和main()函数中都可以应用;main()函数种定义的全局变量,只在main()函数内有效!
儿大不由爷 2007-08-16
  • 打赏
  • 举报
回复
這個問題真強!
johnsonwuy 2007-08-16
  • 打赏
  • 举报
回复
main函数里定义的并非全局变量,只是在main函数里有效.如果程序里有多个函数,定义的全局变量在这些函数里都可以使用,而在main中定义的只能在main中使用,其他函数不可以直接调用比如:
int n=0;
void f()
{
n++;
}
int main()
{
n++;
f();
return 0;
}

如果int n定义在main中
void f();
int main()
{
int n=0;
n++;
return 0;
}
void f()
{
n++;//error ,此处编译都不会通过.
}
要搞清全局变量和局部变量的区别,全局变量是程序的各个函数都可以调用的,而局部变量只在函数内部有效.
qld001 2007-08-16
  • 打赏
  • 举报
回复
就是,main里面定义的那就不是全局变量了阿,神阿~~
chai21cn 2007-08-16
  • 打赏
  • 举报
回复
定义在main里面的变量 怎么变成了 全局变量
我啃 2007-08-16
  • 打赏
  • 举报
回复
谁说定义在main里面的是全局变量?
nihaoweihua 2007-08-16
  • 打赏
  • 举报
回复
用于存储程序数据的内存可以用存储时期、作用域和链接来表征。
存储时期可以是静态的、动态的或分配的。如果是静态的,内存在程序开始执行时被分配,并在程序运行时一直存在。如是动态的,变量所用的内存在程序执行到带变量定义所在代码块时开始分配,在退出代码块时释放,如果是分配的内存,内存在调用malloc()等函数时分配,在调用free()时释放。
作用域决定了哪部分程序可以访问某个数据。在所有函数之外定义的变量具有文件作用域,并对该变量声明之后定义的所有函数可见。在代码块内定义或者作为函数参数定义的变量具有代码块作用域,只在该代码块及其子代码块中可见。
连接描述了程序的某个单元定义的变量可被连接到其他那些地方。具有代码块作用域的变量作为局部变量,具有空连接。具有文件作用域的变量可以有内部连接或外部连接。内部连接意味只可以在包含变量定义的文件内部使用,外部连接意味变量可以在其他文件中使用。

变量的存储类决定了他的存储时期、作用域和链接。存储类由声明变量的位置和与之相关的关键字来决定。
在所有的函数之外定义的变量是外部变量,作用域为整个文件,具有外部连接,静态存储时间。除非使用了其他关键字,在函数中声明的变量是自动变量,具有代码块作用域,空连接、自动存储时间。在函数中使用关键字static定义的变量具有代码块作用域,空连接,静态存储时间。在函数外使用关键字static定义的变量具有文件作用域,内部连接,静态存储时间

除了存储类,C还提供了可分配内存(allocated memory),这种内存通过调用malloc等函数来分配,它返回一个指向该内存的指针,在调用free或程序终止之前该内存保持已分配状态。任何可以访问该指针的函数都可以访问这块内存。
cceczjxy 2007-08-16
  • 打赏
  • 举报
回复
谁说的定义在main()内的变量叫全局变量?
jixshabby 2007-08-16
  • 打赏
  • 举报
回复
.....大哥 在main()函数内定义的变量 还能叫全局变量吗

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧