第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

127、以下敘述中不正確的是____

127、以下敘述中不正確的是____

C
包小龍蝦 2018-09-08 23:20:25
A) 在不同的函數(shù)中可以使用相同名字的變量 B) 函數(shù)中的形式參數(shù)是局部變量 C) 在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效 D) 在一個函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效
查看完整描述

1 回答

已采納
?
onemoo

TA貢獻883條經(jīng)驗 獲得超454個贊

你細想一下:你在前面回復(fù)中的說法和題目中 C 選項是一樣的邏輯。如我在前面回答中指出的,我覺得 C 選項的說法是不嚴謹?shù)摹?/p>

我再多說一些吧:

首先“有效”這個詞就不嚴謹,C 語言中沒有一個叫作“有效”的概念。

C 語言的標(biāo)識符(或者我們簡化一下,就看作是變量名)有個叫“作用域”的概念(這個你肯定知道)

C 語言的對象(或者我們就看作是變量名所代表的實際變量)有個叫“生存期”的概念(我想這個你至少也聽說過)

我不知道你有沒有區(qū)分過這兩個概念?? ?或者你會不會覺得我說的這兩個概念難道不是一回事嗎? 標(biāo)識符、對象、變量這三個名詞難道不是一回事嗎?? 我們不是常說“變量的作用域”、“變量的生存期”嗎......? ?它們當(dāng)然不一樣。 事實上 C 語言中并沒有真正定義“變量”這個名詞。


先說說“標(biāo)識符”和“對象”吧:

如我前面所說,在題目提到的情形中,所謂“標(biāo)識符”其實就是變量名(注意是名字),而“對象”指的就是變量名所代表的“東西”(抱歉這里我不能用“變量”一詞)? ?我不是在咬文嚼字,細想一下,它們的含義確實是有區(qū)別的。下面用代碼舉些例子


int a;? ?這是非常簡單的語句,我們常說這是“聲明(也是定義)了 int 變量 a”。

其實嚴謹?shù)慕庹f是:a 這個名字就是標(biāo)識符,a 所代表的是一個 int 對象。 注意:我并沒有用“變量”一詞,這個詞更像是一種籠統(tǒng)的俗稱。? 必須要說“變量”一詞并不是錯誤的稱呼,在不需要明確區(qū)分標(biāo)識符和對象時,我們當(dāng)然可以說這是“聲明(也是定義)了 int 變量 a”。


而下面的代碼就需要區(qū)分標(biāo)識符和對象了:

{
????...
????int?a;
????
????for?(;;)?{??//?這里是不是?for?語句并不重要,重要的是這對大括號構(gòu)成的語句塊
????????double?a;
????}
}

這段代碼中存在兩個對象:int 型的和 double 型的,但只有一個標(biāo)識符 a!

前面說過,標(biāo)識符有個叫“作用域”的概念,它表示這個名字的“可見”范圍。而對象有個叫“生存期”的概念,它表示對象實際占用存儲空間的存續(xù)期,或者說在哪個范圍內(nèi)對象是存在的。關(guān)鍵是作用域和生存期的范圍不一樣:

  • 標(biāo)識符作用域的范圍是從聲明處起,至所在語句塊結(jié)尾處止。

  • 對象生存期的范圍是從在語句塊起始處起,至所在語句塊結(jié)尾處止。

那么,第 3 行的標(biāo)識符 a 的作用域是從第 3 行到第 8 行大括號結(jié)尾。在這個范圍內(nèi) a 這個名字就表示這里定義的 int 對象。通俗的說法就是“變量 a 在這個范圍內(nèi)可見,在范圍外不可見”。

而這個 int 對象的生存期是從第 1 行的大括號起,到第 8 行大括號為止。在這個范圍內(nèi) int 對象實際存在。

仔細看上面這兩句話你會發(fā)現(xiàn),在第 2 行處,int 對象也存在?? 是的,這個位置在對象的生存期內(nèi),這時 int 對象已經(jīng)實際占用了內(nèi)存。 但是其名字 a 并不可見? 沒錯,在這時你還不能通過 a 這個名字來使用 int 對象。? 這也就是你再熟悉不過的那個通俗地說法“變量在聲明之后才可以使用”。

對于第 6 行。標(biāo)識符 a 在一個新的語句塊中,a 這個名字會“隱藏掉”塊外的同名。這里的 a 具有新的作用域,從第 6 行到第 7 行。也就是在這個范圍內(nèi)提到 a 這個名字,指的就是第 6 行的 double 對象了。 同理,double 對象的生存期是從第 5 行的大括號到第 7 行。

所以“變量”這個通俗的名詞在不同的語境下可能描述的是不同的概念。比如:

  • 我說“第 3 行的 int 變量 a 在第 2 行無效”,其實描述的是“第 3 行的標(biāo)識符 a 的作用域”

  • 我說“第 7 行之后 double 變量 a 就無效了”,其實描述的可能是“double 對象的生存期”



說回到本題

從文字中我感覺得題目中的對“變量有效性”的探討指的是“標(biāo)識符的作用域”。

C 選項中的“本函數(shù)范圍”一詞十分模糊。我不知道它的意思是“本函數(shù)的整個范圍”,還是僅僅粗略地表示“在本函數(shù)范圍內(nèi)就算”。? ?因為標(biāo)識符的作用域是從聲明處開始的,肯定不是“函數(shù)的整個范圍”。? 如果認為這句話是粗略的說法,那還可以認為 C 選項是正確的。

D 選項的說法肯定是錯誤的。甚至即便題目中的“變量”指的是“對象的生存期”,D 也是錯誤的。


但你說答案是 C?!? 這就怪了。

如果認為 C 的意思是“函數(shù)整個范圍”,那 C 就算是錯誤的。但別忘了 D 也是錯誤的呀!? ?假若認為題目的“變量”指的是“生存期”,那 C 的說法反而是正確的了...

所以說...這題目又錯了吧...



P.S. 如果這是單選題,那我強烈地感覺答案應(yīng)該是 D。畢竟 D 的說法怎么樣都是錯誤的。我可以把 C 看作是種粗略的說法而將其認為是正確的。

查看完整回答
反對 回復(fù) 2018-09-10
  • 1 回答
  • 1 關(guān)注
  • 1613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號