VB 全域性變數的一道例題

2022-08-03 06:56:59 字數 1076 閱讀 8962

1樓:匿名使用者

你對變數的作用域,不理解!

概念:變數有區域性變數、模組變數與全域性變數之分:

你那個第一行,還不能叫全域性變數,只能叫模組變數。我們先把全域性變數放一放吧!反正你這裡沒有出現!區域性變數是在過程或模組裡用dim進行宣告的!

在過程或函式裡,既可以訪問模組變數也可以訪問區域性變數,但是當模組變數與區域性變數同名的時候,就以區域性變數為優先。

首先,你的form_click()過程裡,並沒有用dim宣告a,b,c,所以這裡使用的a.b.c是模組變數;

而在function s() 函式裡,用dim 宣告瞭變數a,b,所以在這裡邊操作的a,b,並非模組變數,只有c才是模組變數。而其中的me.b,才是模組變數。

這些弄清楚了,問題也就解決了!

2樓:匿名使用者

很簡單,你要明白變數的作用域。

首先全域性變數作用於整個工程,這個毋庸置疑。

但是,如果某個過程中定義的過程級別變數與全域性變數同名,那麼過程中的與全域性變數同名的變數將被作為過程級別變數來使用。

那麼再來看**:

有三個全域性變數a,b,c

通過form_click事件,

a = 1, b = 2, c=3

執行到sum = s(),這裡將呼叫函式s()

在函式s中,重新定義了兩個變數,a和b,那麼這裡的a和b將作為過程級別變數使用,與前面的全域性變數a,b毫無瓜葛。

所以後面的a = a*a,毫無意義,全域性變數a不會發生任何改變,雖然兩個變數名字看起來一模一樣,但兩個變數的記憶體地址不同,所以儲存的值完全不同。

而me.b這種方式是呼叫的me這個父物件下面的變數b,所以這裡是呼叫的全域性變數b.

經過me.b = me.b * me.b = 2 * 2 = 4

而c變數顯然,直接使用的是全域性變數,所以c = 3 * 3 = 9

但是最後一句s = a + b + c,這裡的a和b實際又是過程級的變數,這兩個變數均為0,所以s = 0 + 0+c = 9

所以,執行到print: sum = 9 , a = 1 , b = 4 , c = 9

that ' s all !!

在vb60中如何申明全域性變數,在VB 6 0中,如何申明一個全域性變數?

在任意模組中用public定義變數,例如public a as integer,使用時可直接寫a,若在其他模組中有與之重名的變數須在變數前宣告模組,比如 form1.a 在 標準模組 的宣告部分,使用關鍵字public或global宣告,可以被工程中的任一窗體,任一模組中的任一過程或函式使用,陣列和...

c的類成員函式如何訪問全域性變數

假如有個全域性變數int a,存放於myfile.h檔案中,則在類中用,需要新增 include myfile.h extern int a 即可 一般情況下,假如沒有區域性宣告變數,就會呼叫全域性變數,如果宣告瞭區域性變數,則,區域性變數會遮蔽全域性變數。除非你指定呼叫全域性變數,加上作用域操作符...

C語言中的全域性變數和區域性變數分別是指什麼

解答問題前,先說明一下,當全域性變數和區域性變數同名時,要看當前 所處的作用域,預設使用當前作用域內的同名區域性變數。分析你所提供的 include int a 4 全域性變數 int f int n else return t a 此外的a是指f函式作用域內的靜態區域性變數,每次f函式呼叫retu...