2011-10-06 27 views
0

我聲明此:改變在主變量的值設定爲可用於其它功能(C++)

int xstartoftable; 
void drawframe(); 

int main() 
{ 
    int xstartoftable = 80-TLENGTH; 
    drawframe(); 

    return 0 
} 
void drawframe(); 
{ 
    gotoXY(xstartoftable - 1, ystartoftable - 1); 
} 

的問題是,當我調試,xstartoftable的值是隨機的,不等於所述一個在main()中。代碼超過150行,這只是需要的部分。

+3

這不是真正的代碼。請發佈您的實際代碼。 –

+1

這是你的實際代碼?它不適合我。 – Kevin

+0

是'somevalue'常數?什麼是'y'?代碼中的什麼地方你看着x? –

回答

5

這是因爲你在main中重新聲明瞭你的變量。

int main() 
{ 
    int xstartoftable = 80-TLENGTH; //extra declaration here 
    drawframe(); 

    return 0; 
} 

,而不是僅僅做:

int main() 
{ 
    xstartoftable = 80-TLENGTH; //leave out declaration 
    drawframe(); 

    return 0; 
} 

這是類似的:

int main() 
{ 
    int x = 0; 
    { 
     int x = 1; 
    } 
    printf("%d",x); 
    //will print 0 
} 

在一些編譯器,你甚至可能會得到一個錯誤。

1

int xstartoftable = 80-TLENGTH;聲明瞭一個不同的xstartoftable,它影響了全局。 g ++有一個方便的-Wshadow警告,捕捉這些東西。

您需要改爲xstartoftable = 80-TLENGTH;