毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 公文素材 > 范文素材 > C語言學習感想

C語言學習感想

網站:公文素材庫 | 時間:2019-05-29 22:35:12 | 移動端:C語言學習感想

C語言學習感想

┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線┊┊┊┊┊┊┊┊┊┊┊┊┊

論文報告紙

C語言學習感想

一C語言學習經歷

學習C語言已經大半年了,回想起這段學C語言的日子,經歷了先苦后甜的過程。

早在上學期就已經聽說過C語言的掛科率,高達50%,同學們談C色變。這種感覺在第一節(jié)課的時候終于得到了證實,老師首先講授了學習C語言的技巧,記得最清楚的就是上課一定要記筆記,上課認真聽,上機認真做練習。接著老師給我們大體介紹了C語言的發(fā)展歷程以及在目前大學教育里的地位的扶搖直上。C語言最初是為開發(fā)UNIX操作系統(tǒng)而設計的。C語言是介于匯編語言和高級語言的語言,C語言面向過程,高級語言面向對象,C語言較于高級語言的一個優(yōu)點就是能夠直接對地址進行操作。最后老師對我們講解了計算機中的進制問題,那叫一個頭疼,老師以為我們在上學期大體學過,就匆匆講了一下,老師的快語速加上我較差的基本功,我徹底的暈了,不過幸好的是我那時并沒有放棄,反而全身心的把精力放在了記筆記上。這個小小的措施使得我有機會在課后仔細的復習和研究老師上課的內容,最終弄懂弄通。

在第二節(jié)課上前面部分老師主要講了C語言的算法,這部分我在高中時接觸過,所以大部分都聽懂了,有不理解的照例做了筆記,課后再看幾遍也就會了。到了后半部分老師講了數據類型及基本運算,這部分開始還能聽的懂,但隨著大量的新概念的輸入,腦子開始迷糊了,我有開始充分發(fā)揮我的強記能力,幾乎把老師說出的每個我聽不懂的字都記錄下來,所以現在看我那一章的書密密麻麻的全是字。但這種方法確實幫了我不少忙。但自那節(jié)課后,我意識到了這種聽課方式的弊端,這樣囫圇吞棗的記筆記,就浪費了大把大把的上課時間,我開始嘗試慢慢的強迫自己接受老師的講課內容,開始確實接受不進去,甚至還想打瞌睡,但這種強迫式的學習開始慢慢的發(fā)揮最用,我開始能夠接受大量的新定義和邏輯算法,這令我無比興奮,我喜歡這這種聽課很順的感覺。

接下來的課,由于前面的基礎打的好,所以聽起課來沒什么困難,至少直到指針這一節(jié)是這樣的。為了更好的學習C語言,我還買了譚浩強的《C語言試題匯編》,做了大量的訓練,漸漸的喜歡上了C語言,看著在電腦上運行自己編寫的小程序,無比興奮(編的小程序僅僅處于自己的愛好)。現在在短學期學習C語言的結構體,指針和鏈表,我很遺憾的是真的如老師所言,我們在短學期根本沒心思好好學,不過為了應付下學期的二級考試,我還是準備在暑假好好再學一下。

二C語言學習技巧(筆者自己的看法,不必錙銖必較)

1.一定要記筆記

2.課后一定要復習,可以向老師拷PPT

3.買一本C語言練習冊,自己有空就做做,大學里有的就是時間4.多多嘗試自己編寫一些小程序,最好是自己感興趣的5.上機好好做題

三學習C語言的重要性(大家都是這樣說的)

1C語言是CombinedLanguage(組合語言)的中英混合簡稱。是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統(tǒng)開發(fā)。

2作為新世紀的大學生,應當站在時代發(fā)展的前列,掌握現代科學知識,調整自己的知識結構和能力結構,以適應社會發(fā)展的要求。新世紀需要具有豐富的現代科學知識,能夠獨立解決面臨的任務,充滿活力,有創(chuàng)新意識的新型人才。尤其是掌握計算機的基本技能和語言。

共3頁第1頁

┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線┊┊┊┊┊┊┊┊┊┊┊┊┊

論文報告紙

四C語言的特點

1.C是中級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。

2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結構化。

3.C語言功能齊全。具有各種各樣的數據類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強大的圖形功能,支持多種顯示器和驅動器。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。

4.C語言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機型。

C語言對編寫需要硬件進行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應用軟件也是用C語言編寫的。

C語言具有繪圖能力強,可移植性,并具備很強的數據處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數值計算的高級語言。

五C語言的優(yōu)點

簡潔緊湊、靈活方便

C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。

運算符豐富

C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。

數據結構豐富

C語言的數據類型有:整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。并引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。

共3頁第2頁

┊┊┊┊┊┊┊┊┊┊┊┊┊裝┊┊┊┊┊訂┊┊┊┊┊線┊┊┊┊┊┊┊┊┊┊┊┊┊

論文報告紙

共3頁第3頁

擴展閱讀:c語言學習心得

1、只有頻繁用到或對運算速度要求很高的變量才放到data區(qū)內,如for循環(huán)中的計數值。2、其他不頻繁調用到和對運算速度要求不高的變量都放到xdata區(qū)。3、常量放到code區(qū),如字庫、修正系數。4、邏輯標志變量可以定義到bdata中。

在51系列芯片中有16個字節(jié)位尋址區(qū)bdata,其中可以定義8*16=128個邏輯變量。這樣可以大大降低內存占用空間。定義方法是:bdatabitLedState;但位類型不能用在數組和結構體中。

5、data區(qū)內最好放局部變量。

因為局部變量的空間是可以覆蓋的(某個函數的局部變量空間在退出該函數是就釋放,由別的函數的局部變量覆蓋),可以提高內存利用率。當然靜態(tài)局部變量除外,其內存使用方式與全局變量相同;

6、確保程序中沒有未調用的函數。

在KeilC里遇到未調用函數,編譯器就將其認為可能是中斷函數。函數里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。這一點Keil做得很愚蠢,但也沒辦法。7、如果想節(jié)省data空間就必須用large模式。

將未定義內存位置的變量全放到xdata區(qū)。當然最好對所有變量都要指定內存類型。8、使用指針時,要指定指針指向的內存類型。

在C51中未定義指向內存類型的通用指針占用3個字節(jié);而指定指向data區(qū)的指針只占1個字節(jié);指定指向xdata區(qū)的指針占2個字節(jié)。如指針p是指向data區(qū),則應定義為:chardata*p;。還可指定指針本身的存放內存類型,如:chardata*xdatap;。其含義是指針p指向data區(qū)變量,而其本身存放在xdata區(qū)。

以前沒搞過C51,大學時代跟單片機老師的時候也是搗鼓下匯編,現在重新搞單片機,因為手頭資料不多,找到一些C51的程序,發(fā)現里面有這些關鍵字,不甚明了,沒辦法只好找了下,發(fā)現如下描述:

從數據存儲類型來說,8051系列有片內、片外程序存儲器,片內、片外數據存儲器,片內程序存儲器還分直接尋址區(qū)和間接尋址類型,分別對應code、data、xdata、idata以及根據51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執(zhí)行效率不同,在編寫C51程序時,最好指定變量的存儲類型,這樣將有利于提高程序執(zhí)行效率(此問題將在后面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬件系統(tǒng),也將有不同的編譯結果。

在51系列中data,idata,xdata,pdata的區(qū)別

data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。

idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:moxACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好)

xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

pdata:外部擴展RAM的低256個字節(jié),地址出現在A0-A7的上時讀寫,用movxACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優(yōu)點,具體用法屬于中級問題,這里不提。

三、有關單片機ALE引腳的問題

"單片機不訪問外部鎖存器時ALE端有正脈沖信號輸出,此頻率約為時鐘振蕩頻率的1/6.每當訪問

外部數據存儲器是,在兩個機器周期中ALE只出現一次,即丟失一個ALE脈沖."這句話是不是有毛

病.我覺得按這種說法,應該丟失3個ALE脈沖才對,我一直想不通是怎么回事,希望大蝦們幫幫我.

小弟感激涕零.

答:

其他所有指令每6個機器周期發(fā)出一個ALE,而MOVX指令占用12個機器周期只發(fā)出一個ALE

四、如何將一個INT型數據轉換成2個CHAR型數據?

經keil優(yōu)化后,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一樣的。

五、在KEILC51上仿真完了,怎樣生成HEX文件去燒寫??

右鍵點項目中Target1,選第二個,在OUTPUT中選中CREATHEX

六、typedef和#define有何不同??

typedef和#define有何不同》》》如

typedefunsignedcharUCHAR;

#defineunsignedcharUCHAR;typedef命名一個新的數據類型,但實際上這個新的數據類型是已經存在的,只不過是定義了

一個新的名字.

#define只是一個標號的定義.

你舉的例子兩者沒有區(qū)別,但是#define還可以這樣用

#defineMAX100

#defineFUN(x)100-(x)

#defineLABEL

等等,這些情況下是不能用typedef定義的

七、請問如何設定KELC51的仿真工作頻(時鐘)

用右鍵點擊左邊的的target1,然后在xtal一欄輸入

八、不同模塊怎樣共享sbit變量,extern不行?

把SBIT定義單獨放到一個.H中,每個模塊都包含這個.h文件

九、C51中對于Px.x的訪問必須自己定義嗎?

是的。

如sbitP17=0x97;即可定義對P1.7的訪問

十、SWITCH()語句中表達式不可以是位變量對嗎?

可以用位變量:

#include

#include

voidmain(){bitflag;

flag=0;

switch(flag){

case"0":{printf("0\\n");break;}

case"1":{printf("1\\n");break;}

default:break;}}

bit變量只有兩種狀態(tài),if語句足夠啦,!!!

十一、const常數聲明占不占內存???

const只是用來定義“常量”,所占用空間與你的定義有關,如:

constcodecstStr[]={"abc"};

占用代碼空間;而如:

constchardatacstStr[]={"abc"};

當然占用內存空間。

另外,#define之定義似乎不占用空間。

十二、philips的單片機P89C51RD+的擴展RAM在C51中如何使用?

試一試將auxr.1清0,然后在c語言中直接聲明xdata類型的變量

十三、BUGofKeilC51

程序中用如下語句:constunsignedcharstrArr[]={"數學"};

結果發(fā)現strArr[]內容為{0xCA,0xD1,0xA7},真奇怪!

凡是有0xfd,則會通通不見了,所以只能手工輸入內碼了,例如ucharstrArr[]=

{0xCA,0xfd,0xd1,0xa7}(用Ultraedit會很方便)。

十四、KeilC51中如何實現代碼優(yōu)化?

菜單Project下Optionfortarget"Simulator"的C51.

看到Codeoptimization了嗎?

十五、請教c的!和~符號有甚區(qū)別??

!是邏輯取反,~是按位取反。

十六、c51編程,讀端口,還要不要先輸出1?

我怎么看到有的要,有的不要,請高手給講講,到底咋回事?謝了

要輸出1的,除非你能保證之前已經是1,而中間沒有輸出過其他值。

十七、當定時器1(T1)用于產生波特率時,P3^5還是否可以用作正常的I/O口呢?

p3.5完全可以當普通的io使用

十八、C51中INT轉換為2個CHAR?

各位高手:

C51中INT轉換為CHAR如何轉換諸如:

X=LOW(Z);

Y=HIGH(Z);

答:

x=(char)z;y=(char)(z>>8);

十九、如果我想使2EH的第7位置1的話,用位操作可以嗎?

現在對位操作指令我一些不太明白請各位多多指教:

如SETB07H表示的是20H.7置1,對嗎?(我在一本書上是這么看到的)

那么如果我想使2EH的第7位置1的話,象我舉的這個例子怎么表示呢?謝謝!

SETB77H

setb(2eh-20h)*8+7

20h-2fh每字節(jié)有8個可位操作(00h-7fh),其它RAM不可位直接操作

二十、char*addr=0xc000和charxdata*addr=0xc000有何區(qū)別?

char*addr=0xc000;

charxdata*addr=0xc000;

除了在內存中占用的字節(jié)不同外,還有別的區(qū)別嗎?

char*addr=0xc000;是通用定義,指針變量addr可指向任何內存空間的值;

charxdata*addr=0xc000;指定該指針變量只能指向xdata中的值;

后一種定義中該指針變量(addr)將少占用一個存儲字節(jié)。

ucharxdata*addr=0xc000;指針指向外ram;

如果:dataucharxdata*addr=0xc000;指針指向外ram但指針本身存在于內ram(data)中

以此類推可以idataucharxdata*addr=0xc000;pdataucharxdata*addr=0xc000;dataucharidata*addr=0xa0;.........

二十一、while(p1_0)的執(zhí)行時間?

假設,P1_0為單片機P1口的第一腳,請問,

while(P1_0){P1_0=0;}

while(!P1_0){

P1_0=1;}

以上代碼,在KEILC中,需要多長時間,執(zhí)行完。能具體說明while(P1_0)的執(zhí)行時間嗎?

仿真運行看看就知道了,

我仿真了試了一下,約14個周期

二十二、怎樣編寫C51的watchdog程序?

各位大蝦,我用KEILC51編寫了一個帶外部開門狗的程序,可程序無法運行起來,經過查

找,發(fā)現程序在經過C51編譯后,在MAIN()函數的前部增加了一端初始化程序,等到進入

主程序設置開門狗時,開門狗已經時間到,將我的程序復位了,請問我怎樣才能修改這一端

初始花程序,使他一運行,就設置開門狗?

可以在startup.a51中加入看門狗刷新指令,當然用匯編,然后重新編譯startup.a,將他和你的程序連接即可。新的startup.a51會自動代替系統(tǒng)默認的啟動模塊。

二十三、keilC51怎樣把修改的startup.a51加到工程文件中

直接加入即可

注意不要改動?STACK,?C_START,?C_STARTUP等符號。startup.a51直接加入項目,不用修改也可。可在內面自己修改匯編的一些限制或堆棧指針。

二十四、關于波特率的設置

我在設定串口波特率時發(fā)現一個問題:在晶體震蕩器為11.0592MHz時,若設9600BPS的話,

TH1=0XFD,TL1=0XFD,而要設19200BPS的話,TH1、TL1有否變化,如果沒變,為什么?

如果變了,又為什么?(因為我看書上倆個是一樣的),希望大家點撥。答:

當電源控制寄存器(PCON)第BIT7(SMOD)為1時波特率加倍。

TH1和TL1的值不變.

二十五、如何在C中聲明保留這部分RAM區(qū)不被C使用?

我不知道在C源程序中怎么控制這個,但在匯編程序中加入下面一段就行:

DSEGAT20H

AA:DS10

這樣C51就不會占用20H--29H了

或者在c51里這樣定義:

uchardataasm_buff[10]_at_0x20;

二十六、問浮點運算問題

我在用C51時發(fā)現它對傳遞浮點參數的個數有限制,請問:

1)參數是以全局變量的形式傳遞的,請問以全局變量的形式傳遞的參數也有限制嗎?

2)這種傳遞浮點參數的限制有多少呢?3)float*float的結果是float類型還是double類型?能否直接賦值給float類型的變量?答:

由于KEILC51的參數傳遞是通過R0-R7來傳遞的,所以會有限制。

不過KEIL提供了一個編譯參數,可以支持更多參數的傳遞。具體

的內容見KEIL的PDF文檔。

我建議你把多個要傳遞的參數定義到指針或結構體中去,傳遞參

數通過指針或結構進行,這樣好一些。

第3個問題回答是YES,你自己試試不就知道了。

二十七、如何在某一個地址定義ram

用_at_命令,這樣可以定位靈活一點的地址

ucharxdatadis_buff[16]_at_0x6020;//定位RAM

將dis_buff[16]定位在0x6020開始的16個字節(jié)

二十八、keilc中,用什么函數可以得到奇偶校驗位?

例如32位數據,將四個字節(jié)相互異或后檢查P即可,若耽心P被改變,可用內嵌匯編。

#include

unsignedcharparity(unsignedcharx){x^=x;

if(P)return(1);

elsereturn(0);}

unsignedcharparity2(unsignedintx){

#pragmaasm

mova,r7

xrlar6,a

#pragmaendasm

if(P)return(1);

elsereturn(0);}

友情提示:本文中關于《C語言學習感想》給出的范例僅供您參考拓展思維使用,C語言學習感想:該篇文章建議您自主創(chuàng)作。

來源:網絡整理 免責聲明:本文僅限學習分享,如產生版權問題,請聯系我們及時刪除。


C語言學習感想》由互聯網用戶整理提供,轉載分享請保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/747895.html
相關文章