const關(guān)鍵字詳解 關(guān)鍵字static、Const、Volatile的作用是什么?
關(guān)鍵字static、Const、Volatile的作用是什么?在C語言中,關(guān)鍵字static有三個(gè)明顯的作用:1)在函數(shù)體中,一個(gè)聲明為static的變量在這個(gè)函數(shù)的調(diào)用過程中保持其值不變。2).在模
關(guān)鍵字static、Const、Volatile的作用是什么?
在C語言中,關(guān)鍵字static有三個(gè)明顯的作用:1)在函數(shù)體中,一個(gè)聲明為static的變量在這個(gè)函數(shù)的調(diào)用過程中保持其值不變。
2).在模塊內(nèi)部(但在函數(shù)外部),聲明為靜態(tài)的變量可以被模塊中使用的函數(shù)訪問,但不能被模塊外部的其他函數(shù)訪問。它是一個(gè)局部全局變量。3).在模塊中,聲明為靜態(tài)的函數(shù)只能由該模塊中的其他函數(shù)使用。打。也就是說,這個(gè)函數(shù)被限制在聲明它的模塊的局部范圍內(nèi)。大部分考生能正確回答第一部分,有些能正確回答第二部分,很少有人能理解第三部分。這是一個(gè)考生的嚴(yán)重缺點(diǎn),因?yàn)樗@然不 我不知道本地化號(hào)碼。數(shù)據(jù)和代碼范圍的好處和重要性。當(dāng)我聽到被采訪者說 "const的意思是不變的,我知道我在和一個(gè)外行打交道。去年,丹·薩克斯在他的文章中完整地總結(jié)了const的所有用法,所以ESP(譯者:e。嵌入式系統(tǒng)編程)應(yīng)該非常熟悉const能做什么和不能做什么。如果你從未讀過那篇文章,就說const的意思是 "只讀 "。雖然這個(gè)回答并不是結(jié)束所有的答案,但我接受它為正確答案。如果你想知道更詳細(xì)的答案,請閱讀Saks 的文章仔細(xì)。如果考生能正確回答這個(gè)問題,我會(huì)額外問他一個(gè)問題:下面這些說法是什么意思?常數(shù)int aint const a const int * a int * const a int const * a const前兩者的作用相同,a為常數(shù)整數(shù)。第三個(gè)意味著a是一個(gè)指向常量整數(shù)的指針(也是也就是說,整數(shù)不能被修改,但是指針可以。第四個(gè)含義A是一個(gè)常量指針,指向一個(gè)整數(shù)(即指針指向的整數(shù)可以修改,但指針不能修改)。最后一個(gè)意味著a是一個(gè)指向常量整數(shù)的常量指針(也就是說,指針指向整數(shù)到不能修改,指針也不能修改)。如果候選人能正確回答這些問題,那么他給我留下了很好的印象。順便說一下,你可能會(huì)問,即使你不 不要使用關(guān)鍵字const,it 編寫一個(gè)功能正確的程序還是很容易的。那么我為什么這么看重const這個(gè)關(guān)鍵詞呢?我還有以下原因:2)通過給優(yōu)化器一些額外的信息,使用關(guān)鍵字const可能會(huì)產(chǎn)生更緊湊的代碼。3).合理使用關(guān)鍵字const可以使編譯器自然。保護(hù)那些不 并防止它們被代碼無意中修改。簡而言之,這樣可以減少bug的發(fā)生。定義為volatile的變量意味著該變量可能會(huì)被意外更改,因此編譯器不會(huì)采用該變量的值。精確地也就是說,優(yōu)化器必須在每次使用這個(gè)變量時(shí)仔細(xì)地重新讀取它的值,而不是使用存儲(chǔ)在寄存器中的備份。下面是一些易變變量的例子:1)。并行設(shè)備的硬件寄存器(如狀態(tài)寄存器)2)。一個(gè)將在中斷服務(wù)子程序(3)中訪問的非自動(dòng)變量。多線程應(yīng)用中幾個(gè)任務(wù)共享的變量假設(shè)受訪者正確回答了這個(gè)問題(好吧,我懷疑會(huì)不會(huì)是這樣),我就稍微深究一下。讓 讓我們看看這個(gè)人是否完全理解volatile的重要性。int square(volatile int * ptr){ return * ptr * * ptr }下面是答案:1)。是的。一個(gè)例子是讀取狀態(tài)寄存器。它是易變的,因?yàn)樗赡軙?huì)被意外地改變。它是常量,因?yàn)槌绦虿粦?yīng)該試圖修改它。2).是的。雖然這不是很常見。一個(gè)例子是當(dāng)服務(wù)子例程修改指向緩沖區(qū)的指針時(shí)。時(shí)間。3).這段代碼中有一個(gè)惡作劇。這段代碼的目的是將指針*ptr返回到值的平方,但是由于*ptr指向一個(gè)volatile參數(shù),編譯器將生成類似如下的代碼:int square(volatileInt *ptr) {int a,ba *ptrb * ptrreturn a * b}由于* ptr的值可能會(huì)意外更改,所以A和B可能會(huì)不同。因此,這段代碼可能不會(huì)返回您期望的平方值!正確代碼如下所示:
java里面的const-string什么意思?
java中不能使用Const。
1.可以使用final關(guān)鍵字。
2.比如finalintm9。聲明為final的變量不能再次賦值。Final也可以用于聲明方法或類,聲明為final的方法或類不能被繼承。
3.注意const是java的保留字,用于擴(kuò)展。Const-String意味著定義的字符串常量不能在任何地方更改。