98年地特程式語言考古題 - 考試

Table of Contents

http://wwwc.moex.gov.tw/ExamQuesFiles/Question%5C098/036339600.pdf

第二題

變數、繫結、和資料型態(20 分)
Void sub() {
int count;
count = 7;
while ( … ) {
int count;
count += 1;…
}
sum = count * 5;…

(一)說明在 C++和 Java 語言中,上列敘述是否合法及其原因。

在C++中合法 但請問理由要怎講?? 我只知道while當中的count跟外面的count是擁有不同

的兩個記憶體,while中宣告的count的scope只在while的"{}"內

所以while的"{}"內用到的count都會去存取自己宣告的那個count

最後出了while,sum=count*5會是引用sub副程式一開始宣告的count=7的值

Java不熟 只知道大多地方跟C/C++很像 請問這部分是一樣的嗎?

(二)請討論其中變數count的記憶體配置的繫結(binding)以及有效範圍(scoping)。

兩個count應該都是堆疊動態變數 也就是變數型態在compile時繫結

但記憶體的繫結發生在該行程式碼要執行時

sub函式一開始宣告的count的scoping是整個sub函式

while內宣告的count的scoping僅只在while的"{}"內


請問第一題該怎樣回答比較好?

第二題自己這樣寫有問題或者內容不足嗎?

謝謝回答

--

All Comments

Lily avatarLily2014-03-02
Java不會過 你可以講講Local Variable、生命週期之類的
Xanthe avatarXanthe2014-03-07
第一題的"理由"真的想不到該怎寫比較好....