求解VB一道題,二級在即,急求

時間 2022-03-03 13:04:44

1樓:

private x as integer,private表示變數x只能在本form裡使用,其他窗體不能呼叫;private x as integer寫到其他過程之外,說明其作用域是整個窗體;作用域,就是乙個變數的生命週期,從定義到消失的**區間,例如:

private sub command1_click()

dim x as integer 'x 出生了。另外注意:過程裡不能用private,要用dim

x = 5

y = 3

call f1(x, y)

print x; y

end sub 'x死亡了,x只在這個區間「活著」,程式可以訪問

為什麼會有這種輸出? 先考慮有private x as integer的情況

首先要明白兩個問題:(1)引數傳遞原理,簡單點講吧,程式執行到call f1(x, y),轉向執行private sub f1(byval a as integer, byval b as integer),這裡面的x是private...那個x,這個x的作用域是整個窗體;而這裡的y是新產生的變數,作用域只在該過程裡,出了過程就消失了,那麼,沒看到這裡dim y...

啊,是的,這就是第(2)個問題,vb裡可以不定義使用乙個變數,dim可以省略,但是,如果你在窗體**的開始加上option explicit,dim就不能省略了,該語句強制要求變數使用前要定義。不寫option explicit,預設可以省略dim。接著看流程,程式執行完了private sub f1(byval ...

後,返回到private sub command1_click(),執行下一條print x; y,這裡的x就是private sub f1裡的x,是25,但此處的y是private sub command1_click()裡的y,是3

如果不寫private x as integer,

private sub f1(byval a as integer, byval b as integer)

x = a * a

y = b + b

end sub

裡面的x,y是在這裡新產生的,到end sub就消失了,在private sub command1_click()裡輸出的x,y就是在這裡面的x,y,5和3

2樓:匿名使用者

private x as integer

寫在前面是表示x是乙個全域性變數,這樣的話在private sub command1_click()和private sub f1(byval a as integer, byval b as integer)裡面處理的x都是乙個變數。

所以在private sub f1(byval a as integer, byval b as integer)處理中會實際上把x這個值修改了。如果不寫的話,private sub command1_click()和private sub f1(byval a as integer, byval b as integer)裡面的x分別是各自函式的區域性變數,所以在private sub f1(byval a as integer, byval b as integer)中對x的處理不會影響private sub command1_click()裡面的x的值。

3樓:匿名使用者

private x as integer

private 宣告模組繃私有變數,在那個位置用dim x as integer是一樣的。

如果你不加它,

private sub command1_click()end sub

中的x是command1_click中的區域性變數與過程f1的計算結果無關,

你列印是此局變數x的值所以是5,而過程f1中的私有變數x是25,也就是說你不加它,兩個過程中的兩個x是兩個區域性變數,互無關係。

如果你加了它,兩過程中的x就是乙個變數了,所以回返回25。

4樓:匿名使用者

x在函式外面,是全域性變數,不管你在**改了,它的值都變了。

y是作為引數傳入函式,而且這裡是值傳遞的,函式裡面隨便怎麼整,對外面的值一點影響都沒有的。

再解釋一下,f1裡面的y和command1_click裡面的y根本就不是同乙個東西,

這裡沒報錯是因為沒有強制要求變數宣告,否則f1裡會報錯,說y沒有定義。

5樓:精製骨架

x 和 y 都是區域性變數

command1 和sub f1中的x 並不是同乙個變數這是vb引數傳遞的基本知識

不加byval 預設的是byref

byref 是傳址,就是把變數的位址傳送給函式,在函式的內部對引數的修改,實際上是對變數位址裡的資料修改,所以當函式返回的時候,傳進來的變數也是跟著改變的

byval 是傳值,顧名思義,就是把變數的資料傳給函式,函式內部對其做任何處理都不會影響變數本身的值

舉個簡單的例子

如果你寫乙個函式,想讓它返回兩個或更多值,你就用傳址的方式,在函式內部對引數的修改,返回之後,你傳進去的變數,不就有新的值了嗎(還有其他用法,我在這就不說了)

vb題一道,求解疑,VB題一道,求解疑

假設陣列中的不是1 10,而是1 2n n可能為任意大於0的整數 你的寫法就沒有上面寫得通用,按簡化程度說,他的 比你少1行,但做了同樣一件事 n n 1 與你的n 11 i 是一樣的作用,正可謂異曲同工!一開始,它的n 10,i 1 而每一次迴圈,n n 1,那麼 n 就是 10,9,8,7,6 ...

請教一道vb題,請教一道vb的程式設計題!!

太睏了,直接用if語句給你 if ch1.check true thentext1.text 學習程式設計 end if if ch2.check true then end if if ch1.check true and ch2.check true then end if if ch1.che...

一道英語題,求解,求解一道英語題

你好。1 在答題以前,我足足看了10分鐘時間。語感告訴我,這道題出得非常不好,因為根據不同的思維角度,這四個選項都是正確的。難怪你糾結。residents inhabitants from 是完全可以接受的。同樣,immigrants emigrants from 也是正確的表達。如果是單項選擇,我...

一道初二數學題,求解一道數學題。

解答 1 設ae 1,則ad n,de n 1,連線ef,設ef x,則bf x,af n x,在直角 aef中,由勾股定理得 1 n x x 解得 x n 1 2n 又易證 feh fbh,feh b 90 易證 aef dqe,1 dq x qe n x n 1 整理得 dq 2n n 1 eq...

解釋一道VB題

這個哪有為什麼啊。首先迴圈。新增列表中3 4 5 6 7 8然後刪除。所以1的時候刪除4 剩下3 0 5 1 6 2 2的時候刪除6.然後就是3.也就是8.最後剩下的不就是3 5 7 了?對程式行編號如下 1 private sub form click 2 dim i 3 for i 3 to 8...