作者timyau (timyau)
看板C_and_CPP
标题[问题] 给值的问题
时间Sat Apr 14 13:32:36 2007
请问在 function 里面
void f()
{
int x = 0;
}
void f()
{
static int x = 0;
}
与 在 function 外面的 global
int x = 0;
这几个动作有什麽不一样吗?
不是都是给予 x 初始值 0 吗?
为什麽有人说是不一样的?
有人说 global 的 int x = 0; 是给与初始值
static 的 static int x = 0; 也是给予初始值
但是 function 内的 int x = 0;
其实是 int x;
x = 0;
这两个动作。
所以 function 内的 int x = 0;
并不是给予初始值,而是将宣告 x 变数、给予 x 变数的值 = 0
两个动作合成一块。
我知道 static 的 function 内部给予初值,
第二次进入的时候初值不会再设定(毕竟已经不是第一次进入了)
所以假设
int f()
{
static int x = 0;
x++;
return x;
}
呼叫第二次 f() 的结果将会是 2
所以说在 function 里面的 local 变数 int x = 0; 并不是给予初始值吗?
请指教。
--
乡民
们的中心思想是个干干的表现是如果不爽就干如果很爽就补个干如果太爽大家
陪你一起干如以干为本体表现在具体的生活上他妈柏油张爸一起来对美女伸图对白
烂嘘文对呜溜迷手滑对注音文失败对对闪光有墨镜喔批踢踢
的中心主版是黑特黑特
的表现是扯到政治就浸扯到版务也浸没有乱扯就看板主心情如以黑特为海绵体表现
在版上的推文中他妈ㄋㄐ路小比一起来要懂得推齐要心存怀疑要充满 timyau
干意
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.183.207
1F:推 doomleika:这是变数生命周期的问题 04/14 16:35
2F:→ doomleika:你给的初值是在变数生成时给的 04/14 16:35
3F:→ doomleika:直到变数摧毁为止你对变数作的变化会一直保存 04/14 16:36
4F:→ doomleika:global会在程式开始时生成,static是在程式开始时或是 04/14 16:37
5F:→ doomleika:第一次近入function时生成,其它function的区域变数 04/14 16:37
6F:→ doomleika:在进入function时生成,离开时摧毁 04/14 16:37
7F:→ doomleika:你可以把static看成只有该function才看得见的global变数 04/14 16:39
8F:→ timyau:所以其实function内的int x=0; 也是给初值嘛..感谢指导 04/14 17:28