求教什么是“函数作用域”

tjucruiser 2011-11-23 04:35:46
书上这么写:

函数作用域
只有语句标号有函数作用域,即仅在语句标号所出现的函数内有效。

这句话不理解,请教高手解释,多谢
...全文
93 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MasterLonely 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tjucruiser 的回复:]

比如有这段代码
void fun1();
void main()
{
int i;
for(i=0;i<10;i++) fun1();
}
void fun1()
{
static int x=0;
x++;
cout<<x<<endl;
}

fun1第一次被调用,输出1
fun1第二次被调用,为什么输出2.第一次调用完,x这个变量还存在吗
[/Quote]

這是另一個問題了。
這個是變量生存期問題。 static 的為靜態變量,生存期為整個程序。但作用域還是不變。
x只能在fun1裡使用,但程序一開始,x就會初使化為0。之後多次調用fun1,並不會再次初使化。
tjucruiser 2011-11-23
  • 打赏
  • 举报
回复
比如有这段代码
void fun1();
void main()
{
int i;
for(i=0;i<10;i++) fun1();
}
void fun1()
{
static int x=0;
x++;
cout<<x<<endl;
}

fun1第一次被调用,输出1
fun1第二次被调用,为什么输出2.第一次调用完,x这个变量还存在吗
tjucruiser 2011-11-23
  • 打赏
  • 举报
回复
明白了, myloop在fun1函数中出现,那么只在fun1中有效,其他地方无效
阿尼小码 2011-11-23
  • 打赏
  • 举报
回复
即仅在语句标号所出现的函数内有效。
就是说某个语句标号只出现在函数内 ,即仅在函数内有效,语句标号就是指一些变量等一些东东,不知道我说得对不对反正我就是这样理解的,什么是文件作用域?楼主自己去看看书
疯魔症 2011-11-23
  • 打赏
  • 举报
回复
你的这句话,读起来很绕嘴,不知道是什么书上的。
函数作用域,就是一个函数内部的的变量在执行时才有效,离开时无效。C语言里用static修饰的另说。
[Quote=引用楼主 tjucruiser 的回复:]
书上这么写:

函数作用域
只有语句标号有函数作用域,即仅在语句标号所出现的函数内有效。

这句话不理解,请教高手解释,多谢
[/Quote]
测试NULL 2011-11-23
  • 打赏
  • 举报
回复

#include <stdio.h>

void test()
{
label2:
printf("hello!");
}

int main()
{
int i = 0;

if (i > 10)
{
goto label1;
}
else
{
goto label2;
}

label1:
return 0;
}
疯魔症 2011-11-23
  • 打赏
  • 举报
回复
深入研究的原理:执行程序后,main还是是一个栈,这个栈就是main的作用域,当main执行别的函数时,就跳到别的栈,一个函数只在自己的栈里面有效。
tjucruiser 2011-11-23
  • 打赏
  • 举报
回复
书上还给了这个例子
#include <iostream.h>
fun1()
{ int x;
myloop: cin>>x;
if (x<=0) goto myloop;
return x;
}
void main()
{
goto myloop;
cout<<x;
}

69,371

社区成员

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

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