关于static用法的求助

yuhuimoon 2011-12-17 10:44:43
static的有个用法是这样描述的:

“在模块内,被声明为静态的函数只能被这一模块内的其他函数调用。”

请问,这里所指的模块,在VS中是不是指整个Solution
...全文
140 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arnis1973 2011-12-19
  • 打赏
  • 举报
回复
就是同一个CPP文件
weilandeyekong 2011-12-18
  • 打赏
  • 举报
回复
static指的是文件的作用域,与extern是相对应的
woshiwaiwai 2011-12-18
  • 打赏
  • 举报
回复
一个编译单元,C++的每一个CPP文件就是一个编译单元
cssdn433411 2011-12-18
  • 打赏
  • 举报
回复
"其实b就等同于一个全局变量了"
不是吧,至少在函数外就不能调用b了。
i945800687 2011-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 i945800687 的回复:]
不是,是指这一个程序块


C/C++ code

int abc(int c, int d)
{
int a;
static int b;
.....
}


第二次调用这个函数,a的值会重新计算,而b的值会保留第一次结果
[/Quote]

不好意思,没讲清楚,应该是“b的值会以第一次结果作为初值”
i945800687 2011-12-17
  • 打赏
  • 举报
回复
不是,是指这一个程序块


int abc(int c, int d)
{
int a;
static int b;
.....
}


第二次调用这个函数,a的值会重新计算,而b的值会保留第一次结果
wizard_tiger 2011-12-17
  • 打赏
  • 举报
回复
楼上正解!
logicouter 2011-12-17
  • 打赏
  • 举报
回复
static是文件作用域,只能被定义在同一个文件的函数访问。
Gloveing 2011-12-17
  • 打赏
  • 举报
回复
static表明此函数是内部链接
未指定则是外部链接
周晓荣 2011-12-17
  • 打赏
  • 举报
回复
不是
指的是cpp文件
static表明此函数是内部链接
周晓荣 2011-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 i945800687 的回复:]

不是,是指这一个程序块

C/C++ code

int abc(int c, int d)
{
int a;
static int b;
.....
}


第二次调用这个函数,a的值会重新计算,而b的值会保留第一次结果
[/Quote]
这样子b的作用于就在这个函数之内,其他地方是访问不到的。
而b也只会进行一次初始化,就是第一次调用的时候,接下来的重复调用都不会进行重新初始化了,所以b的值为上一次调用的值。
比如:

void func(void)
{
static int b = 1;//其实b就等同于一个全局变量了
++b;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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