java用什么代替指針 在C 中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?
在C 中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?可以作為回調(diào)函數(shù)。只需要將函數(shù)指針作為參數(shù)傳給另一個(gè)函數(shù),那么另一個(gè)函數(shù)執(zhí)行過(guò)程中或執(zhí)行以后就可以通過(guò)這個(gè)指針調(diào)用預(yù)先設(shè)定好的用戶
在C 中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?
可以作為回調(diào)函數(shù)。只需要將函數(shù)指針作為參數(shù)傳給另一個(gè)函數(shù),那么另一個(gè)函數(shù)執(zhí)行過(guò)程中或執(zhí)行以后就可以通過(guò)這個(gè)指針調(diào)用預(yù)先設(shè)定好的用戶函數(shù)了。
C語(yǔ)言中的函數(shù)指針和指針函數(shù),有什么區(qū)別嗎?該如何理解?
函數(shù)指針和指針函數(shù)的區(qū)別:
1. 名字解析。這兩個(gè)名詞都是帶有修飾的名詞,可以略微擴(kuò)展一下,在中間加個(gè)助詞"的",函數(shù)的指針和指針的函數(shù)現(xiàn)在看看,稍微清晰了一點(diǎn),現(xiàn)在再擴(kuò)展一下,加點(diǎn)修飾詞--指向函數(shù)的指針和返回值為指針的函數(shù)現(xiàn)在基本明確了。
2. 格式。
Type (* pFunc)(Type para) -- 函數(shù)指針
Type* Func(Type para) -- 指針函數(shù)
3. 先說(shuō)指針函數(shù),其實(shí)它就是普通函數(shù),只不過(guò)返回值是指針(其實(shí)就是地址)而已,很多人因?yàn)榭謶种羔?,覺(jué)得它神秘!
4. 函數(shù)指針。這個(gè)有點(diǎn)復(fù)雜,首先*和pFunc先結(jié)合,優(yōu)先級(jí)最高,因此pFunc就是指針了,同時(shí)這個(gè)指針后面帶走一對(duì)小括號(hào),里面還有參數(shù),和函數(shù)的參數(shù)是一樣的格式,因此這個(gè)指針就是函數(shù)指針,這個(gè)指針前面還有個(gè)類(lèi)型-返回值類(lèi)型!有人這里感覺(jué)很奇怪,指針怎么有返回值呢?
5. 指針有返回值,是因?yàn)檫@個(gè)指針講來(lái)使用的時(shí)候,會(huì)指向一個(gè)格式和它自己類(lèi)似的函數(shù),因此這個(gè)指針的返回值和參數(shù)格式就決定了指向的函數(shù)的格式!
6. 函數(shù)指針要熟練,沒(méi)有為啥,必須會(huì),因?yàn)楹瘮?shù)指針使用的時(shí)候體現(xiàn)的是C語(yǔ)言中的聯(lián)編特點(diǎn),也是后來(lái)C 語(yǔ)言中多態(tài)的雛形!
Java的哪個(gè)語(yǔ)法特性讓你覺(jué)得寫(xiě)Java代碼很享受?
本人在日常主要使用的語(yǔ)言為c#和Java,就語(yǔ)法而言,寫(xiě)c#更讓人享受。主要原因?yàn)閏#更多的語(yǔ)法糖,linq真的好用,其次visual studio號(hào)稱宇宙第一IDE。但是個(gè)人還是更愿意用java。
從java8出來(lái)后,感覺(jué)java在追趕著c#的步伐, java和c#的語(yǔ)法上越來(lái)越像(本來(lái)也挺像的,哈哈)。以下做一個(gè)小小的比較。
c#
java
以上實(shí)現(xiàn)的功能差不多,在java8中加入lambda表達(dá)式后,個(gè)人感覺(jué)越來(lái)越像c#了。
拋開(kāi)語(yǔ)法層面,現(xiàn)在來(lái)說(shuō)一說(shuō)為什么更愿意用java
1、首先當(dāng)然是看收益啦,在國(guó)內(nèi)基本上沒(méi)有用c#的大廠,本來(lái)攜程在用,后來(lái)也轉(zhuǎn)為java了。
2、從技術(shù)層面來(lái)講,因?yàn)閖ava造輪子的多,有很多優(yōu)秀的框架可以使用。在實(shí)際做項(xiàng)目中你遇到的問(wèn)題,其他人肯定遇到過(guò),能夠很好的找到問(wèn)題關(guān)鍵。
3、從生態(tài)上來(lái)講,Java無(wú)疑是最好的選擇之一,因?yàn)槠溟_(kāi)源的早,建立生態(tài)的時(shí)間早。
4、從性能來(lái)說(shuō),Sun/Oracle的HotSpot JVM內(nèi)置的JIT編譯器在運(yùn)行時(shí)對(duì)字節(jié)碼已經(jīng)做出了非常大的優(yōu)化努力,如果不是對(duì)性能十分敏感的應(yīng)用,java足夠用了。
謝謝。