C語(yǔ)言是一門面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語(yǔ)言是僅產(chǎn)生少量的機(jī)器語(yǔ)言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語(yǔ)言?!∠旅媸切【帋?lái)的有關(guān)大一c語(yǔ)言數(shù)組實(shí)驗(yàn)心得,希望大家喜歡
試驗(yàn)?zāi)康?1、 掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法; 2、 掌握字符數(shù)組和字符串函數(shù)的使用; 3、 掌握與數(shù)組有關(guān)的算法特別是排序算法。 二、 實(shí)驗(yàn)內(nèi)容 教材習(xí)題P1527.2 三、 算法流程圖 四、 程序清單 include void main {int i,j,min,s,a[11]; printf“請(qǐng)輸入數(shù)組
“; fori1;i10;i {printf“a[d]“,i; scanf“d“, } printf“
“; printf“原數(shù)據(jù)為
“; fori1;i10;i printf“5d“,a[i]; printf“
“; fori1;i9;i {mini; forji1;ja[j] minj; sa[i]; a[i]a[min]; a[min]s; } printf“排好序的數(shù)組為
“; fori1;i10;i printf“5d“,a[i]; printf“
“; } 五、 運(yùn)行結(jié)果 六、 實(shí)驗(yàn)總結(jié)(調(diào)試分析和體會(huì)) 這個(gè)星期我對(duì)使用數(shù)組進(jìn)行程序設(shè)計(jì)的學(xué)習(xí),在之前的基礎(chǔ)上,我更加努力,課前先預(yù)習(xí),上課認(rèn)真聽,經(jīng)過(guò)我的努力我進(jìn)步了很多,雖然有了很大的進(jìn)步,但在學(xué)習(xí)上還是存在很多問(wèn)題。但這次的作業(yè)比上周的條件結(jié)構(gòu)程序好多了。經(jīng)過(guò)自己的努力,我已經(jīng)掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;掌握字符數(shù)組和字符串函數(shù)的使用;掌握與數(shù)組有關(guān)的算法特別是排序算法。這一單元數(shù)組跟以前的選擇結(jié)構(gòu)程序設(shè)計(jì)和循環(huán)控制相比,內(nèi)容要繁瑣得多,程序語(yǔ)句沒(méi)有以前那么明了,要經(jīng)過(guò)認(rèn)真的思考,在經(jīng)過(guò)自己思考后,即使是自己懂得算法的原理后,要來(lái)調(diào)程序又困難重重,一個(gè)程序要經(jīng)過(guò)認(rèn)真思考和反復(fù)的調(diào)試程序,才能完成。在多次的練習(xí)下,我基本上能結(jié)合程序掌握一些算法。通過(guò)多次的實(shí)驗(yàn)操作,我的操作能力有了很大的進(jìn)步,但在學(xué)習(xí)的過(guò)程中并非一帆風(fēng)順,特別是在對(duì)程序的語(yǔ)句上,問(wèn)題特別多。但我經(jīng)過(guò)耐心地操作和虛心地請(qǐng)教終于掌握了正確的操作方法
指針是c語(yǔ)言的精華,也是c語(yǔ)言的難點(diǎn),它就像一把雙刃劍,鋒利無(wú)比但運(yùn)用的不好也會(huì)給自己帶來(lái)危害,后果比較嚴(yán)重,所以重點(diǎn)來(lái)說(shuō)說(shuō)指針。
很多初學(xué)者弄不清指針和數(shù)組到底有什么樣的關(guān)系,為避免混淆不清,下面總結(jié)一下指針和數(shù)組的特性。
指針是保存數(shù)據(jù)的地址,任何存入指針變量的數(shù)據(jù)都會(huì)被當(dāng)作地址來(lái)處理,指針變量本身的地址由編譯器另外存儲(chǔ),存儲(chǔ)在哪里,我們并不知道,間接訪問(wèn)數(shù)據(jù),首先取得指針變量的內(nèi)容,把它作為地址,然后從這個(gè)地址讀或?qū)懭霐?shù)據(jù)。
指針可以用間接訪問(wèn)操作符(_)訪問(wèn),也可以用以下標(biāo)的形式訪問(wèn),指針一般用于動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。
數(shù)組是用來(lái)保存數(shù)據(jù)的,數(shù)組名代表的是數(shù)組首元素的地址而不是數(shù)組的首地址,所以數(shù)組p與&p是有區(qū)別的,雖然內(nèi)容相同,但意義卻不同,&p才是整個(gè)數(shù)組的首地址,數(shù)組名是整個(gè)數(shù)組的名字,數(shù)組內(nèi)每個(gè)元素并沒(méi)有名字,不能把數(shù)組當(dāng)一個(gè)整體來(lái)進(jìn)行讀寫操作。
當(dāng)然數(shù)組在初始化時(shí)也有例外,如int p[]=“12345”是合法的。
數(shù)組可以以指針的形式訪問(wèn)如_(p+i);也可以以下標(biāo)的形式訪問(wèn)p[i],但其本質(zhì)都是p所代表的數(shù)組首元素的地址加上i_sizeof(類型)個(gè)字節(jié)作為數(shù)據(jù)的真正地址來(lái)進(jìn)行訪問(wèn)的。
數(shù)組通常用于存儲(chǔ)固定數(shù)目且數(shù)據(jù)類型相同的元素。
剛開始的時(shí)候我
有點(diǎn)分不清指針數(shù)組和數(shù)組指針,現(xiàn)在也總結(jié)一下,指針數(shù)組,首先它是一個(gè)數(shù)組,數(shù)組的每個(gè)元素都是指針,可以理解為“存儲(chǔ)指針的數(shù)組”的簡(jiǎn)稱,數(shù)組指針,首先它是一個(gè)指針,它指向一個(gè)數(shù)組,在32位系統(tǒng)下永遠(yuǎn)只占4個(gè)字節(jié),至于它指向的數(shù)組有多少個(gè)字節(jié),并不知道,可以理解為“指向數(shù)組的指針”。
舉個(gè)例子,int _p1[10]與int (_p2) [10], 要理解這個(gè)問(wèn)題,首先要清楚操作符的優(yōu)先級(jí),“[]” 的優(yōu)先級(jí)比“_” 的優(yōu)先級(jí)高,所以首先p1與“[10]”結(jié)合構(gòu)成一個(gè)數(shù)組p1[10],int _為修飾數(shù)組的內(nèi)容,所以數(shù)組元素是指向int類型的指針,所以這個(gè)是指針數(shù)組,“()” 的優(yōu)先級(jí)比“[]” 的優(yōu)先級(jí)高,“_”與p2結(jié)合構(gòu)成一個(gè)指針變量,int修飾數(shù)組的內(nèi)容,即數(shù)組的每個(gè)元素,數(shù)組這里并沒(méi)有名字,是個(gè)匿名數(shù)組,現(xiàn)在清楚了p2是一個(gè)指針,它指向一個(gè)包含10個(gè)int類型數(shù)據(jù)的數(shù)組,即為數(shù)組指針。
下面再說(shuō)說(shuō)內(nèi)存管理,內(nèi)存分為三個(gè)部分:靜態(tài)區(qū)、堆、棧。
其實(shí)堆棧就是棧,而不是堆。
靜態(tài)區(qū)是保存自動(dòng)全局變量和static變量。
靜態(tài)區(qū)的內(nèi)容在整個(gè)程序的生命周期內(nèi)都存在,由編譯器在編譯的時(shí)候分配。
堆是由malloc系統(tǒng)函數(shù)分配內(nèi)存的。
其生命周期由free和delete決定。
棧保存局部變量。
棧上的內(nèi)容只在函數(shù)范圍內(nèi)存在,當(dāng)函數(shù)運(yùn)行結(jié)束,這些內(nèi)容也會(huì)自動(dòng)被銷毀。
再說(shuō)說(shuō)有關(guān)內(nèi)存需要注意的地方,定義了指針變量,在使用之前一定要初始化使它指向一塊合法的內(nèi)存,不管什么時(shí)候,我們?cè)谑褂弥羔樦耙欢ㄒ_保指針是有效的。
使用malloc系列函數(shù)分配內(nèi)存,使用完之后應(yīng)及時(shí)釋放內(nèi)存,以防止內(nèi)存泄露。
最后總結(jié)的說(shuō)一下學(xué)習(xí)c語(yǔ)言的方法就是編程編程再編程,理論學(xué)習(xí)與上機(jī)操作同時(shí)進(jìn)行,另外在編程序的過(guò)程中要養(yǎng)成良好的編程習(xí)慣。
c語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,是大部分編程語(yǔ)言的基礎(chǔ),c語(yǔ)言學(xué)好了,以后的java,c#以及更多的編程語(yǔ)言才有可能學(xué)好。下面就跟南寧達(dá)內(nèi)小編一起,要學(xué)好c語(yǔ)言必須了解的四點(diǎn):
1、課前認(rèn)真預(yù)習(xí),把下一節(jié)要上的內(nèi)容先自己看一遍,把不懂的地方打個(gè)標(biāo)記,等上課的時(shí)候可以請(qǐng)教老師。理解書上的例子,搞懂每個(gè)語(yǔ)句的含義,用法??赐旰髧L試著不看例子自己編寫程序,編完以后再跟書上進(jìn)行比較,看自己的程序還有哪方面的不足,再進(jìn)行改正。想要真正學(xué)好c語(yǔ)言光看書是不夠的,一定要自己多動(dòng)手?! ?、上課認(rèn)真聽講積極思考,提高上課效率。老師上課講述的都是課程的重點(diǎn)和難點(diǎn),聽好課程可以達(dá)到"事半功倍"的目的。 3、課后復(fù)習(xí)。把每天的上課內(nèi)容回家再溫習(xí)一遍,獨(dú)立完成課后的作業(yè),如果有時(shí)間,最好能找點(diǎn)課外書籍、課外習(xí)題什么的來(lái)鞏固所學(xué)的內(nèi)容。 4、主動(dòng)上機(jī),多多實(shí)踐,提高動(dòng)手能力。通過(guò)上機(jī)實(shí)踐來(lái)驗(yàn)證所學(xué)的理論,通過(guò)在機(jī)器上查找錯(cuò)誤來(lái)鞏固概念,通過(guò)提高上機(jī)能力來(lái)促進(jìn)理論學(xué)習(xí),開闊編程思路,提高反映速度,提高分析問(wèn)題解決問(wèn)題的能力,鍛煉心理素質(zhì),提高心理承受能力?! W(xué)習(xí)c語(yǔ)言的初期重點(diǎn)要放在掌握語(yǔ)言的語(yǔ)法和規(guī)定上,一定要養(yǎng)成良好的編程習(xí)慣,平時(shí)寫程序注意語(yǔ)法規(guī)范格式控制,格式規(guī)范了,出了錯(cuò)誤也容易找到出錯(cuò)的地方,這是c語(yǔ)言的基礎(chǔ);后期的重點(diǎn)要轉(zhuǎn)移到掌握編程的思路和基本算法上來(lái)。課后多做習(xí)題,找一些經(jīng)典例子嘗試自己編寫,寫程序切忌半途而費(fèi),想到一個(gè)思路,就要按自己思路把它寫完,就算錯(cuò)了,也可以讓自己了解為什么這樣做會(huì)錯(cuò)?錯(cuò)在哪里?會(huì)出什么結(jié)果?以后自己也很難在這個(gè)地方犯同樣的錯(cuò)誤。當(dāng)學(xué)到一個(gè)新的知識(shí)點(diǎn),就試著把它運(yùn)用到以前做的習(xí)題上,不但鞏固了以前學(xué)的內(nèi)容,也更加能加強(qiáng)新知識(shí)的理解。 學(xué)習(xí)c語(yǔ)言就是要經(jīng)過(guò)以上這樣幾個(gè)反復(fù),才能前后融會(huì)貫通,積累所應(yīng)該掌握的知識(shí)。c語(yǔ)言是這樣,其他語(yǔ)言也是這樣,從基本抓起,多動(dòng)手,多動(dòng)腦,不懂就問(wèn),注意平時(shí)積累。