看板Programming
标 题TC++ 变数视野求教
发信站Giga News Service (Wed Jan 9 16:24:22 2008)
转信站ptt!ctu-reader!ctu-gate!ctu-peer!news.nctu!csnews.cs.nctu!news.cs.nctu
MSGID: 0:0/0 382982A1
-KEY: FF77111D
void main(void)
{
if(func1())
func2();
}
int func1(void)
{
int i;
:
:
return i;
}
int i;
void func2(void)
{
:
}
以上是我将程式简化後的结构.
会将 int i 放在 func1 及 func2 间是因 int i 本来在 func2 内(auto)
而 func2 太大不符合大拇指原则, 所以我将 func2 切割成数个函式;
但 i 是共用的, 所以我将之放在 func2 前宣告.
怪的是这样跑程式会出错,
若我将 func1 内的 int i 拿掉, 将 int i 移到 func1 前就正确了.
不解的是 func1 内的 i 不是 auto 变数吗?
理应不会左右後面的外在变数 i 才对,
且到了 func2 时 i 的值会重设, 而 func1 的 i 没有进出.
但事实显示似乎两个 i 会互相干扰.....
以前学 C 时急冲冲地想写程式, 对变数视野这部份没下过功夫,
现在嚐到恶果了(无法解释这现象)
拜托各位大大帮我解惑,
程式不能这样写吗?
--- 本站可传档、聊天、写信喔 !
* Origin: 翡翠王国资讯站(BBS) [站址: 203.204.191.217] (0:0/0)