c語(yǔ)言入門(mén)注意事項(xiàng) C語(yǔ)言,自定義函數(shù)要注意些什么?
C語(yǔ)言,自定義函數(shù)要注意些什么?C語(yǔ)言中自定義函數(shù)最常見(jiàn)的注意點(diǎn)之一是區(qū)分 "價(jià)值傳遞 "和 "地址傳遞 "。 "價(jià)值轉(zhuǎn)移 "和 "地址轉(zhuǎn)移和都是一個(gè)字不一樣,發(fā)音很接近,卻是天壤之別。很多初學(xué)C語(yǔ)言
C語(yǔ)言,自定義函數(shù)要注意些什么?
C語(yǔ)言中自定義函數(shù)最常見(jiàn)的注意點(diǎn)之一是區(qū)分 "價(jià)值傳遞 "和 "地址傳遞 "。 "價(jià)值轉(zhuǎn)移 "和 "地址轉(zhuǎn)移和都是一個(gè)字不一樣,發(fā)音很接近,卻是天壤之別。很多初學(xué)C語(yǔ)言的人,經(jīng)常對(duì)通過(guò)函數(shù)傳遞一個(gè)數(shù)據(jù)值和一個(gè)地址感到困惑,以至于C程序的運(yùn)行結(jié)果差別很大。這個(gè)回答會(huì)詳細(xì)解釋 "地址轉(zhuǎn)移和和 "價(jià)值轉(zhuǎn)移 "在C語(yǔ)言中。
用于值傳遞和地址傳遞的I. C程序代碼,以闡明 "價(jià)值轉(zhuǎn)移 "和 "地址轉(zhuǎn)移和,讓 讓我們先來(lái)看一段C程序代碼,如下:
上面的C程序代碼很簡(jiǎn)單:在C程序的主函數(shù)中定義了兩個(gè)整型變量para1和para2,初始值分別為1和2;還有一個(gè)指針變量pInt,它的初始值是變量para2的地址。
在c程序的主函數(shù)中,首先調(diào)用自定義函數(shù)ValueTrans,將變量para1作為參數(shù)。在自定義函數(shù)ValueTrans中,將變量para1重新賦值為11。調(diào)用函數(shù)ValueTrans后輸出變量para1的值,看看是什么;
在C程序的主函數(shù)中,再次調(diào)用用戶自定義函數(shù)AddrTrans,將指針pInt作為參數(shù)。在自定義函數(shù)AddrTrans中,將指針pInt指向的值重新賦值為22。調(diào)用函數(shù)AddrTrans后,輸出變量para2的值,看看是什么;
現(xiàn)在讓我們 讓我們來(lái)看看這個(gè)C程序的運(yùn)行結(jié)果:
驚訝不驚訝?驚訝嗎?
第二,值傳遞和地址傳遞的解釋現(xiàn)在讓 下面解釋一下為什么上面的C程序代碼是這樣的運(yùn)行結(jié)果。
1.價(jià)值轉(zhuǎn)移
上面的c程序代碼調(diào)用函數(shù)ValueTrans,并將變量para1作為參數(shù)。注意,變量para1的值1被作為參數(shù)。
當(dāng)執(zhí)行ValueTrans函數(shù)時(shí),系統(tǒng)會(huì)悄悄地在某個(gè)地方創(chuàng)建一個(gè)名為para1的新整數(shù)變量。這個(gè)整型變量para1并不是C程序代碼主函數(shù)中的para1。我們可以把主函數(shù)中的para1看成main_para1,把函數(shù)ValueTrans中的para1看成ValueTrans_para1。然后在函數(shù)ValueTrans中,11實(shí)際上被賦給了變量ValueTrans_para1。至于變量main_para1,還是!
所以在C程序的主函數(shù)中,最后一個(gè)變量para1的值還是1。
2.地址傳輸
上面的c程序代碼調(diào)用函數(shù)AddrTrans,將指針pInt作為參數(shù)。注意,此時(shí)變量para2的地址作為參數(shù),有意思!當(dāng)執(zhí)行函數(shù)AddrTrans時(shí),系統(tǒng)本身會(huì)在某個(gè)地方創(chuàng)建一個(gè)新的指針變量,也叫pInt。但是這個(gè)指針變量pInt的值就是main函數(shù)中那個(gè)pInt的值。換句話說(shuō),兩個(gè)指針變量pInt同時(shí)指向C程序中主函數(shù)的變量para2。然后在函數(shù)AddrTrans中給指針pInt所指的值賦22,實(shí)際上改變了主函數(shù)中變量para2的值,很神奇!這就是C語(yǔ)言指針的魅力!
所以在C程序的主函數(shù)中,最后一個(gè)變量para2的值變成了22。
以上是C語(yǔ)言編程中自定義函數(shù)時(shí)需要注意的地方。你清楚了嗎?
C語(yǔ)言入門(mén)怎么自學(xué)? 需要哪些資料?
C語(yǔ)言是面向過(guò)程的,而C是C和C的區(qū)別:
c是一種結(jié)構(gòu)化語(yǔ)言,側(cè)重于算法和數(shù)據(jù)結(jié)構(gòu)。C程序設(shè)計(jì)首先考慮的是如何通過(guò)一個(gè)進(jìn)程來(lái)操作輸入(或環(huán)境條件)得到輸出(或?qū)崿F(xiàn)進(jìn)程(事務(wù))控制)。
c、首先考慮的是如何構(gòu)造一個(gè)對(duì)象模型,使這個(gè)模型能夠擬合相應(yīng)的問(wèn)題域,從而通過(guò)獲取對(duì)象的狀態(tài)信息來(lái)實(shí)現(xiàn)輸出或過(guò)程(事務(wù))控制。所以C和C最大的區(qū)別就是他們解決問(wèn)題的思維不一樣。C之所以比C高級(jí),是因?yàn)?"設(shè)計(jì)的概念已經(jīng)融入到C "。C和C最大的區(qū)別就是解決問(wèn)題的思維不同。C比C更先進(jìn)的原因是 "設(shè)計(jì)的概念已經(jīng)融入到C ",而且就語(yǔ)言本身而言,C更多的是算法的概念。那它就不會(huì)。;無(wú)所謂,如果它 南卡羅來(lái)納州錯(cuò)了!算法是編程的基礎(chǔ),一個(gè)好的設(shè)計(jì)可以 沒(méi)有好的算法是行不通的。此外, "優(yōu)秀的設(shè)計(jì)和也能寫(xiě)出很好的東西。
工作中接觸過(guò)很多想學(xué)C語(yǔ)言,沒(méi)有任何計(jì)算機(jī)基礎(chǔ)的人。人們經(jīng)常問(wèn) "我不 沒(méi)有任何基礎(chǔ),如何進(jìn)入C語(yǔ)言? "。我見(jiàn)過(guò)很多新手,很久都找不到路。這時(shí)候一個(gè)問(wèn)題總會(huì)浮現(xiàn)在腦海里:學(xué)C語(yǔ)言真的有那么難嗎?不難。
很多人學(xué)C語(yǔ)言,一上來(lái)就背語(yǔ)法,連各種高級(jí)算法都死記硬背。在大學(xué)里,流行考計(jì)算機(jī)二級(jí)C語(yǔ)言證書(shū)。有人手抄資料,有人背書(shū),最后可憐巴巴的拿到所謂的證書(shū)。當(dāng)他們真正用C語(yǔ)言寫(xiě)程序處理問(wèn)題的時(shí)候,腦子是空的??赡軐W(xué)完這種,我記住了很多C語(yǔ)言語(yǔ)法,但是我可以 don'不要學(xué)習(xí)如何編寫(xiě)處理問(wèn)題的程序。所以掌握學(xué)習(xí)方法很重要。如果你覺(jué)得很難,那是因?yàn)槟闳狈玫姆椒ā?/p>
學(xué)習(xí)C語(yǔ)言也離不開(kāi)背語(yǔ)法,但是死如果你記得,你可以 t. C語(yǔ)言,沒(méi)有什么是工具,是用來(lái)表達(dá)我們的想法,讓電腦幫我們思考的。寫(xiě)程序的過(guò)程就變成了告訴計(jì)算機(jī)做什么的過(guò)程。很多人遇到問(wèn)題都沒(méi)有思路,更別說(shuō)用C語(yǔ)言寫(xiě)程序了。當(dāng)你遇到問(wèn)題時(shí),不要猶豫。;不要考慮如何用C語(yǔ)言處理它。記住:編程數(shù)據(jù)結(jié)構(gòu)算法,把你的思維換成數(shù)據(jù)的組織和算法的思維。
數(shù)據(jù)結(jié)構(gòu)說(shuō)到底就是一些數(shù)據(jù)的組織形式,數(shù)據(jù)在C語(yǔ)言中有自己的類型,各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)也是從最基本的數(shù)據(jù)類型組織起來(lái)的。所以,學(xué)習(xí)C語(yǔ)言,首先要記住C語(yǔ)言有哪些數(shù)據(jù)類型,掌握每種數(shù)據(jù)類型的定義和使用規(guī)則。任何計(jì)算機(jī)編程語(yǔ)言,最根本的是對(duì)數(shù)據(jù)的操作。每種語(yǔ)言都有不同形式的數(shù)據(jù)組成。很多時(shí)候,你可以構(gòu)造不同的數(shù)據(jù)結(jié)構(gòu)來(lái)處理同一個(gè)問(wèn)題。初學(xué)者唐 為了寫(xiě)出漂亮的程序,不必深入研究他們想制作什么類型的數(shù)據(jù)。你只需要記住你在:需要什么樣的數(shù)據(jù)。
學(xué)C語(yǔ)言,然后學(xué)算法。算法的好壞直接影響到程序的質(zhì)量。一些人建議,當(dāng)學(xué)習(xí)程序時(shí),我們應(yīng)該看看其他人 并研究其他人如何處理問(wèn)題。是的,這是必要的,但不要 不要總看,也要多為自己著想。這里的思考不是讓你思考如何處理這個(gè)問(wèn)題,而是思考如何教會(huì)計(jì)算機(jī)幫助你解決這個(gè)問(wèn)題。畢竟我們寫(xiě)的程序是給計(jì)算機(jī)運(yùn)行的。你必須根據(jù)計(jì)算機(jī)的特點(diǎn)來(lái)思考。
計(jì)算機(jī)在處理問(wèn)題時(shí)有自己的特點(diǎn):
1、計(jì)算機(jī)在處理問(wèn)題的要求時(shí),會(huì)告訴它所有的可能性。人們可以根據(jù)自己的習(xí)慣忽略一些事情,但是電腦可以。;電腦不會(huì)。;我沒(méi)有和人類一樣的智能處理能力。它是人類的忠實(shí)信徒,無(wú)論你怎么想,它都會(huì)執(zhí)行你的命令。因?yàn)槟愕牧?xí)慣,一些別有用心的人或者無(wú)意犯錯(cuò)的人犯錯(cuò),有時(shí)候會(huì)讓電腦不知所措。累,甚至崩潰,報(bào)錯(cuò),導(dǎo)致你的程序不成功,所以你覺(jué)得很難。
2.計(jì)算機(jī)要求程序的描述準(zhǔn)確無(wú)誤。人類語(yǔ)言具有很強(qiáng)的隨機(jī)性和模糊性。我們平時(shí)說(shuō)話的時(shí)候,有時(shí)候會(huì)有一些寒暄,有時(shí)候說(shuō)話的邏輯會(huì)說(shuō)不清楚。詞語(yǔ)既可以表達(dá)這個(gè)意思,也可以表達(dá)那個(gè)意思。人可以根據(jù)環(huán)境和對(duì)方想表達(dá)的意思來(lái)分析意思,最后得出正確的結(jié)果,但是計(jì)算機(jī)很弱智。雖然它很聽(tīng)話,但它能 無(wú)法理解你的想法,只會(huì)按照你給出的指令去做,這將導(dǎo)致執(zhí)行過(guò)程中出現(xiàn)警報(bào)和錯(cuò)誤。
3、計(jì)算機(jī)編程要求有很強(qiáng)的全局性和邏輯性,沒(méi)有起伏。人與自然。;的思維非常活躍。期間和休眠期間,電腦不會(huì),它總是處于待機(jī)狀態(tài)。人在思考一個(gè)問(wèn)題的時(shí)候,有很多樂(lè)趣,但是這不是問(wèn)題的全部,而是一部分,所以做完一段代碼之后,就不愿意再寫(xiě)了,或者覺(jué)得很辛苦,所以覺(jué)得很難。
所以我們?cè)谒伎紗?wèn)題的時(shí)候,要記住計(jì)算機(jī)的特點(diǎn),站在計(jì)算機(jī)的角度考慮問(wèn)題。當(dāng)然,作為一個(gè)初學(xué)者,我習(xí)慣了和人一起思考,改變想法需要一個(gè)過(guò)程。我們可以根據(jù)人來(lái)解決問(wèn)題。;先s邏輯,再打個(gè)比方。如果你自己是一臺(tái)計(jì)算機(jī),你應(yīng)該如何處理這個(gè)問(wèn)題?當(dāng)你學(xué)會(huì)從計(jì)算機(jī)的角度思考問(wèn)題,并能正確地用C語(yǔ)言的語(yǔ)法表達(dá)自己的想法(算法)時(shí),你就真正開(kāi)始接觸C語(yǔ)言了。
自學(xué)編程,免費(fèi)獲取高質(zhì)量的IT教程和材料,請(qǐng)?jiān)L問(wèn)