欧美综合视频在线_国产乱码精品一区二区三区av _国产精品白浆_免费日本一区二区三区视频_波多野结衣家庭主妇_三级黄色片免费看_国产精品久久久一区二区三区_欧美一区二区黄色_狠狠色丁香九九婷婷综合五月 _亚洲一级二级三级在线免费观看

c語言論文優選九篇

時間:2022-11-19 08:47:21

引言:易發表網憑借豐富的文秘實踐,為您精心挑選了九篇c語言論文范例。如需獲取更多原創內容,可隨時聯系我們的客服老師。

c語言論文

第1篇

參考文獻:

[1]裘宗燕.C++程序設計語言(特別版).北京機械工業出版社,2002.7.

[2]StandleyB.lippman.C++Primer中文版.人民郵電出版社,20006.3.

[3]譚浩強.C程序設計(第二版).清華大學出版社出版,2005.6.

[4]錢能.C++程序設計教程.清華大學出版社,2005.5.

[5]沈美明.IBMPC匯編語言程序設計.清華大學出版社,1993.9.

[6]錢曉捷.匯編語言程序設計.電子工業出版社,2003.

【參考文獻】

[1]翟乃強,隋樹林,匯編語言與C語言及VisualC++混合編程[J].青島科技大學學報,2003,24(B09):136~138.

[2]錢曉捷,匯編語言程序設計(第二版)[M],電子工業出版社,2003.6.

[3]錢春英,淺談C語言與匯編語言混合編程的一些技術[J].南通航運職業技術學院學報,2005,4(1):50~52,55.

[4]郭曉梅,匯編語言與C語言的混合編程及應用[J].南京農專學報,2002,18(4):49~52,62.

[5]普拉塔.CPrimerPlus(第五版)中文版[M].人民郵電出版社,2005.

[6]斯馬爾迪諾.教學技術與媒體[M].高等教育出版社,2008.

[7]教育部考試中心.全國計算機等級考試二級教程——C語言程序設計[M].2010年版.北京:高等教育出版社,2010.

參考文獻:

[1]周以真.計算思維[J].中國計算機學會通訊,2007,(3):77-79.

[2]董榮勝.計算思維與計算機導論[J].計算機科學,2009,(36):50-52.

[3]林旺.孫洪濤[J].基于軟件應用的計算思維能力培養教學設計.中國電化教育2014,(11):122-127.

第2篇

關鍵詞FranklinC51編譯器匯編語言結構化設計模塊中斷

--------------------------------------------------------------------------------

在研制單片機應用系統時,匯編語言是一種常用的軟件工具。它能直接操作硬件,指令的執行速度快。但其指令系統的固有格式受硬件結構的限制很大,且難于編寫與調試,可移植性也差。隨著單片機硬件性能的提高,其工作速度越來越快,因此在編寫單片機應用系統程序時,更著重于程序本身的編寫效率。而FranklinC51交叉編譯器是專為80C51系列單片機設計的一種高效的C語言編譯器,使用它可以縮短開發周期,降低開發成本,而且開發出的系統易于維護,可靠性高,可移植性好,即使在代碼的使用效率上,也完全可以和匯編語言相比,因此目前它已成為開發80C51系列單片機的流行工具。

1C51語言程序設計的基本技巧

C語言是一種高級程序設計語言,它提供了十分完備的規范化流程控制結構。因此采用C51語言設計單片機應用系統程序時,首先要盡可能地采用結構化的程序設計方法,這樣可使整個應用系統程序結構清晰,易于調試和維護。對于一個較大的程序,可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對于不同的功能模塊,分別指定相應的入口參數和出口參數,而經常使用的一些程序最好編成函數,這樣既不會引起整個程序管理的混亂,還可增強可讀性,移植性也好。

在程序設計過程中,要充分利用C51語言的預處理命令。對于一些常用的常數,如TRUE,FALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據外界條件可變的常量,可采用宏定義"#define"或集中起來放在一個頭文件中進行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當需要修改某個參量時,只須修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都作修改,從而有利于文件的維護和更新。現舉例說明如下:

例1對于不同的單片機晶振,程序取不同的延時時間,而且可根據外界條件的變化修改延時時間的長短。對于這樣的程序,可利用宏定義和條件編譯來實現。程序如下:

#defineflag1

#ifdefflag==1

#definefosc6M

delay=10;

#elifflag==0

#definefosc8M

delay=12;

#else

#definefosc12M

delay=20;

#endif

main()

{

for(I=0;I<delay;I++);

}

這樣源程序不作任何修改就可適用于不同時鐘頻率的單片機系統,并可根據情況的不同取不同的delay值,完成不同的目的。

2C51語言與匯編語言程序的混合編程

C51編譯器能對C語言源程序進行高效率的編譯,生成高效簡潔的代碼,在絕大多數場合采用C語言編程即可完成預期的目的。但有時為了編程直觀或某些特殊地址的處理,還須采用一定的匯編語言編程。而在另一些場合,出于某種目的,匯編語言也可調用C語言。在這種混合編程中,關鍵是參數的傳遞和函數的返回值。它們必須有完整的約定,否則數據的交換就可能出錯。下面就以力源公司的10位串行A/D轉換器TLC1549為例說明C語言程序與匯編語言程序的調用。

圖1TLC1549管腳圖

1549的管腳圖和時序圖分別如圖1和圖2所示,假定DATAOUT接P1.0,接P1.1,CLOCK接P1.2。

1549的具體特性請查閱有關資料。

例2C語言程序與匯編語言程序的調用,其子程序如下:

PUBLICAD;入口地址

SEG_ADSEGMENTCODE;程序段

RSEGSEG_AD

USING0

AD:MOVR6,#00

MOVR7,#00

SETBP1.1

ACALLDELAY

CLRP1.1

ACALLDELAY

MOVR0,#10

RR0:SETBP1.2

NOP

CLRP1.2

DJNZR0,RR0

ACALLDELAY

MOV30H,R6;A/D轉換的高

;兩位保存在R6中

ACALLCIR

MOVR6,30H

SETBP1.2

NOP

CLRP1.2

MOV30H,R6

ACALLCIR

MOVR6,30H

MOVR0,#8;A/D轉換的低

;8位保存在R7中

RR2:SETBP1.2

NOP

CLRP1.2

MOV30H,R7

ACALLCIR

MOVR7,30H

DJNZR0,RR2

RET

CIR:CLRC

MOVC,P1.0

MOVA,30H

RLCA

MOV30H,A

RET

END

在以上程序中,函數的返回值為一無符號整型數,根據調用規則,返回值的高位必須在R6中,低位在R7中,這樣才可保證數據的傳遞不出錯。另外,在調用過程中,必須注意寄存器的入棧。這樣在以后用到A/D轉換時,在C語言中調用匯編語言子程序AD()即可。

3C51中斷處理過程

C51編譯器支持在C源程序中直接開發中斷過程,因此減輕了使用匯編語言的繁瑣工作,提高了開發效率。中斷服務函數的完整語法如下:

void函數名(void)[模式]

[再入]interruptn[usingr]

其中n(0~31)代表中斷號。C51編譯器允許32個中斷,具體使用哪個中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調用中斷函數時,要求中斷過程調用的函數所使用的寄存器組必須與其相同。"再入"用于說明中斷處理函數有無"再入"能力。C51編譯器及其對C語言的擴充允許編程者對中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創建高效的中斷服務程序,用戶只須在C語言下關心中斷和必要的寄存器組切換操作。

例3設單片機的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。

用C語言編寫的中斷服務程序如下:

#include<reg51.h>

sbitP1_0=P1^0;

voidtimer0(void)interrupt1using1{

/*T0中斷服務程序入口*/

P1_0=!P1_0;

TH0=-(1000/256);/*計數初值重裝*/

TL0=-(1000%256);

}

voidmain(void)

{

TMOD=0x01;/*T0工作在定時器方式1*/

P1_0=0;

TH0=-(1000/256);/*預置計數初值*/

TL0=-(1000%256);

EA=1;/*CPU開中斷*/

ET0=1;/*T0開中斷*/

TR0=1;/*啟動T0*/

do{}while(1);

}

在編寫中斷服務程序時必須注意不能進行參數傳遞,不能有返回值。

第3篇

為了激發學生的興趣,可以采用Funcode平臺進行課程設計。Funcode平臺是一款基于游戲設計和動畫界面的C\C++\Java綜合實驗教學平臺,該平臺以游戲設計為“噱頭”,吸引學生的學習興趣,雖然如此,該平臺通過精選大量的游戲案例,還是很好地將程序設計知識點和游戲設計緊密地結合起來,始終緊扣C語言知識點,為C語言課程設計教學提供了一個很好的工具。

1.1圖形方式的游戲界面編輯Funcode平臺采用圖形界面方式的游戲編輯環境,直觀、美觀、簡潔易用。圖1所示為正在設計中的游戲,左側矩形框中為最終運行時可見的游戲界面,可以從右側中的“魚”(Funcode中稱為“精靈”,任何類似的圖片都是精靈,不同的精靈以精靈名區分)中任意拖拽一條“魚”到左側矩形框中,即可在游戲界面中增加一條魚。

1.2提供功能函數,屏蔽對圖形的復雜處理Funcode平臺提供了大量功能函數,屏蔽對圖形對象的復雜處理,使學生能夠專注于程序設計和游戲邏輯功能的實現。例如:功能函數voiddSetSpriteLinearVelocityX(constchar*szName,constfloatfVelX)可以使精靈以某一速度水平運動。讓圖1左側中的魚(假設該魚命名為fish0)游動起來,學生只需用一條函數調用語句dSetSpriteLinearVeloctyX(“fish0”,30)即可實現;亦可通過調用功能函數dSetSpriteLinearVelocity(“fish0”,30,30)使魚水平方向和垂直方向分速度均為30,即在屏幕上“斜向”游動;功能函數dSetSpriteFlipX(“fish0”,true)調用可以使魚水平翻轉,即實現“掉頭”功能。

1.3整體邏輯框架簡潔,功能強大Funcode平臺整體邏輯框架由7個主要函數模塊組成,分別是主函數模塊、鼠標移動事件模塊、鼠標單擊事件模塊、按鍵事件模塊、按鍵彈起事件模塊、對象碰撞事件模塊、對象與邊界碰撞事件模塊。其主函數模塊如以下程序代碼所示,通過主函數模塊控制整個游戲的運行和界面刷新。其他的6個函數模塊幾乎包含了游戲設計中需要處理的所有事件,并且向學生屏蔽了事件激發所需要的復雜判斷過程,所有的鼠標事件、鍵盤事件、碰撞事件均為自動激發,這很大程度上降低了設計難度,使學生可以專注于游戲邏輯功能的實現。例如:要實現圖1中的“魚”游到右側邊界時掉頭向左游邏輯功能,在Funcode平臺下,當圖1中的“魚”游到右側邊界時,“對象與邊界碰撞”模塊將會自動激發,該模塊的初始程序代碼如下所示。此時,學生無需判斷和處理“魚”是否游到邊界(這對大學一年級學生而言比較困難),只需要知道“魚”游到邊界后會自動調用“對象與邊界碰撞”模塊對應的dOnSpriteColWorldLimit函數即可。因此,學生只要能夠根據游戲功能在該函數中正確地編寫相應的代碼就可以了,具體實現“掉頭向左游”邏輯功能的完整程序代碼如下所示。顯然,這樣就極大地簡化了對圖形對象和事件的處理,學生就可以把更多的精力投入到游戲邏輯功能的實現和代碼的編寫和調試中。

1.4開放式環境,極大地激發學生創新能力Funcode提供了開放式的開發環境,除了完成Funcode提供的課程設計案例以外,學生也可以按照自己的思路,添加素材,大膽創新,設計和開發真正屬于自己的游戲,這樣能極大地激發學生的程序設計熱情。例如:一組學生開發的“大魚吃小魚”游戲,當大魚吃小魚得分達到一定的分值時,可以生出“魚寶寶”,尾隨大魚游動,生動有趣。

2教學內容和方法的改革

基于Funcode平臺,在教學內容和方法的改革上,以激發學生興趣,調動學生學習主動性為主要目標,在此基礎上,貫穿整個課程設計的各個階段,采用多種教學方式和方法培養學生各方面的綜合素質。

2.1選題階段在選題內容上,典型游戲設計和自主創新相結合。改變原有的設計內容變為基于Funcode平臺游戲設計。設計內容分為兩類:一類是典型的可在Funcode平臺上實現的游戲,比如坦克大戰、打地鼠等;另一類是學生自選題目,要學生根據Funcode平臺功能,發揮自己的想象力,創造自己的游戲。教師要通過討論、引導等方式,鼓勵學生自己設計游戲,培養其創新意識和創新能力。題目選定之后,要求學生將游戲整體功能用功能模塊和流程圖的方式清楚地表示出來,并且要能夠準確地描述各模塊之間的關系,鍛煉學生的抽象思維和邏輯思維能力。在選題方式上,要堅持組內討論和師生互動相結合。組內討論有利于游戲功能的完善,有利于發揮所有同學的創新潛力,有利于調動學生參與的積極性。通過教師和學生的討論交流,教師要控制游戲功能的實現復雜度,既要保證設計的工作量,又要保證控制在可實現的范圍內。

2.2設計階段在課程設計過程中,要避免“學生問,教師答”的教學模式,教師要積極地參與到所有學生的設計中,主動和學生交流討論,掌握他們的設計情況;善于通過引導啟發,培養學生各方面的綜合素質。在設計中,要及時發現并指出存在的問題;對于學生提出的問題,要善于引導他們積極獨立思考,盡量讓其自主分析,找到原因,進而找到解決問題的方法,這一方面可以培養學生獨立思考,分析問題和解決問題的能力,另一方面可以增強學生的成就感和自信心,有利于調動學生參與實踐的熱情。對于游戲功能的實現,要讓學生畫出流程圖或實現步驟,體會程序設計中的抽象思維和邏輯思維。比如對于“打飛蟲”游戲,當“拍子”拍中“飛蟲”時,對應Funcode抽象概念為“拍子”對象和“飛蟲”對象發生碰撞事件,由于碰撞事件自動激發,所以拍中“飛蟲”后對應的游戲功能實現邏輯應該在碰撞事件中表達。對于該碰撞事件的處理,要求學生首先畫出拍中“飛蟲”后的處理邏輯,體會程序設計中的邏輯思維。比如:使“飛蟲”圖像從界面消失在“飛蟲”鏈表中刪除該飛蟲顯示拍效根據拍中的“飛蟲”類型計分刷新游戲界面上顯示的實時得分值。課程設計要求按組進行,設計中要求分工合理,任務明確,緊密協作,嚴格按照日程安排,完成設計任務。要求每2天一次,將每人獨立設計的模塊進行整合并測試,同時要求學生定期開展討論,鼓勵他們對設計中存在的問題,積極和同組同學交流溝通,要善于發揮集體的力量,解決問題。在協作設計中,培養學生的團隊合作意識。此外,在游戲的設計過程中,必然會存在一些較難實現或者知識點超出課本內容的功能,從經驗來看,大多數學生都會無奈地選擇放棄該功能。此時,教師一定要向學生強調自主學習的重要意義,讓他們認識到課堂教學中講的內容大多是最基礎的核心知識點,而實際的應用中要涉及的知識卻遠非如此,并積極鼓勵和指導學生學習和掌握相關知識點。

2.3考評階段為了進一步培養學生興趣,調動其積極性,考核采用每組分別進行講解和演示,交流心得體會,其他組同學和教師進行打分的形式。打分項分為游戲功能、工作量、流暢性、創新性、美觀性等5個方面。演示中鼓勵其他組的同學提問和試玩游戲,盡量找出游戲設計的缺陷,通過多種方式培養學生的展示能力和競爭意識。最后,教師再進行總結性點評,指出設計的優缺點。

3教學效果

從調動學生學習積極性方面來看,在整個課程設計過程中,學生始終保持著極高的熱情。教師為課程設計建立了QQ群,提供全天答疑服務,從QQ群討論情況來看,學生提問很多,討論熱烈,而且絕大多數在課外時間。此外,課程設計結束后,很多學生指出,Funcode平臺美中不足的是:自己創造出的游戲最終生成的可執行程序離開Funcode平臺不能運行,非常令人遺憾。這也可以從一個側面反映了學生的熱情和對自己勞動成果的珍惜。從課程設計內容來看,學生大多是按照自己的想法設計的,游戲功能可謂五花八門,創新能力得到了很好的培養和鍛煉。更重要的一點是達到了課程設計的教學目的,學生對程序設計的理解更加深刻,鞏固了C語言學習成果,能夠將游戲功能的實現邏輯用計算機語言準確地表達出來。在程序設計中遇到的具體問題,學生能夠提出自己的解決思路,并通過編寫程序表達自己的思路,很好地將課堂上學到的理論知識應用于實際問題的解決,抽象思維和邏輯思維能力、程序設計實踐動手能力均得到了很好的鍛煉。例如:圖2所示為學生設計的游戲初始界面。該游戲實現的功能有:游戲實時倒計時;游戲實時顯示得分;通過鍵盤控制游戲的開始、暫停和游戲場景的切換;用鼠標控制“拍子”進行移動和拍打;打到大蚊子、小蚊子積分不同,打到堅果則減分,且打中目標有圖片特效產生;蚊子的產生地點、時間、數量和產生時的飛行速度都是隨機的,且飛行速度隨著積分級別越來越快;游戲結束時顯示得分最高的三條歷史記錄等。此游戲中,學生自己編寫代碼(不包括自動生成的代碼)行數在800行以上,使用的C語言知識點涵蓋了數組、鏈表、函數、變量作用域、多分支結構、循環結構等。

4結語

第4篇

關鍵詞IPSec;NAT;IKE;UDP封裝

1引言

基于IP技術的虛擬專用網(VirtualProfessionalNetwork,簡稱VPN)是通過Internet平臺將局域網擴展到遠程網絡和遠程計算機用戶的一種成本效益極佳的方法。隨著網絡安全技術的飛快發展,越來越多大型企業利用互聯網采用IPSec技術建立VPN網絡,IPSec已逐漸成為VPN構建的主流技術。IP安全協議(IPSecurityProtocol,簡稱IPSec)是由互聯網工程工業組(InternetEngineeringTaskForce,簡稱IETF)1998年底規劃并制定的網絡IP層標準。IPSec不僅可以為IP協議層以上所有的高層協議和應用提供一致性的安全保護,而且除了可用于IPv4之外,也可用于下一代IP協議IPv6。

另外,NAT(NetworkAddressTranslation)技術通過改變進出內部網絡的IP數據包的源和目的地址,把無效的內部網絡地址翻譯成合法的IP地址在Internet上使用。該技術一方面可以把私有IP地址隱藏起來,使外界無法直接訪問內部網絡,對內部網絡起到保護作用;另一方面,它可以緩解由于IPv4先天設計上的不足,而導致的IP地址嚴重短缺的現狀。

但是,被廣泛使用的網絡地址轉換(NAT)設備卻制約著基于IPSec技術的VPN的發展,這是因為IPSec協議在VPN中承擔保護傳輸數據的安全性任務。在數據傳輸過程中,任何對IP地址及傳輸標志符的修改,都被視作對該協議的違背,并導致數據包不能通過安全檢查而被丟棄。但在VPN中運用NAT技術,則不可避免地要將私網地址映射為公網地址,即對IP地址要進行修改。因此,在VPN網絡中如何使IPSec和NAT協同工作,實現NAT的透明穿透具有現實意義。

2協議介紹

2.1IPSec

IPSec包括安全協議和密鑰管理兩部分。其中,AH和ESP是兩個安全協議,提供數據源驗證、面向無連接的數據完整性、抗重放、數據機密性和有限抗流量分析等安全任務。為了能夠將相應的安全服務、算法和密鑰應用于需要保護的安全通道,IPSec規定兩個通信實體進行IPSec通信之前首先構建安全關聯SA。SA規定了通信實體雙方所需要的具體安全協議、加密算法、認證算法以及密鑰。IKE提供了用來協商、交換和更新SA以及密鑰的完整機制。

IPSec定義了兩種類型的封裝模式——傳輸模式和隧道模式。傳輸模式只對IP分組應用IPSec協議,對IP報頭不進行任何修改,它只能應用于主機對主機的IPSec虛擬專用網VPN中。隧道模式中IPSec將原有的IP分組封裝成帶有新的IP報頭的IPSec分組,這樣原有的IP分組就被有效地隱藏起來了。隧道主要應用于主機到網關的遠程接入的情況。

2.2NAT

NAT能解決目前IP地址緊缺的問題,而且能使得內外網絡隔離,提供一定的網絡安全保障。它解決問題的辦法是:在內部網絡中使用內部地址,通過NAT把內部地址翻譯成合法的IP地址在Internet上使用,其具體的做法是把IP包內的地址或用合法的IP地址來替換。NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨的NAT設備中。

NAT有三種類型:靜態NAT、動態地址NAT、網絡地址端口轉換NAPT。其中靜態NAT設置起來最為簡單,內部網絡中的每個主機都被永久映射成外部網絡中的某個合法的地址。而動態地址NAT則是在外部網絡中定義了一系列的合法地址,采用動態分配的方法映射到內部網絡。NAPT則是把內部地址映射到外部網絡的一個IP地址的不同端口上。根據不同的需要,三種NAT方案各有利弊。

3IPSec與NAT的不兼容性分析

根據協議的定義,我們知道IPSec和NAT兩個協議之間存在一定的不兼容性。其不兼容性主要有以下幾種形式:

1)NAT對AH的影響

IPSecAH進行驗證的時候,處理的是整個IP包,包括源地址和目的地址。如果IPSec通信雙方存在NAT設備,NAT設備就會修改外層IP包頭的源地址并修改其校驗和,這樣接收方會因認證失敗而丟棄該包。

2)NAT對ESP的影響

TCP/UDP校驗和地計算涉及一個虛構的IP包頭,該包頭含有IP源和目的地址。因此,當NAT設備改變IP地址時也需要更新IP頭和TCP/UDP校驗和。如果采用ESP傳輸模式,IP包經過NAT設備時,NAT設備修改了IP包頭,但是TCP/UDP校驗和由于處于加密負載中而無法被修改。這樣,該信包經過IPSec層后將因為TCP協議層的校驗和的錯誤而被丟棄。

另外,由于TCP/UDP校驗和只與內層原始IP包頭有關,外層IP包頭的修改并不對其造成影響,因此采用ESP隧道模式和僅靜態或動態NAT的情況下不存在TCP校驗和的問題。但是,在NAPT情況下,因為NAPT需要TCP/UDP端口來匹配出入信包,而端口號受到ESP加密保護,所以ESP分組通信將會失敗。

3)NAT對IKE的影響

IKE主模式與快速模式中如果使用IP地址作為身份信息,經過NAT后,會導致IKE協商的失敗。

IKE協議使用固定目的端口500,當NAPT設備后的多個主機向同一響應者發起SA協商時,為了實現多路分發返回的IKE包,NAPT修改外出的IKE包的UDP源端口。因此,響應者應該能處理端口號并非500的IKE協商請求,但往往NAPT對UDP端口的映射很快會被刪除,再協商的過程就將出現一些不可預見的問題,很容易導致NAPT設備無法將協商包送到正確的目的地。

綜上所述,IPSec組件對NAT的支持能力如表1所示從表1中可以看出,只有在隧道模式和地址轉換情況下才可以實現IPSec數據流的NAT穿越。這一方法既降低了IPSec協議的安全性,又限制了NAT的工作方式,因此在實際應用中可行度較差。

4IPSec與NAT的兼容性要求

在現有的條件下,為了推動基于IPSec的VPN的發展,IPSec和NAT兼容性解決方案需要滿足下列要求:

1)可部署性

IPSec和NAT兼容性解決方案作為一個過渡的解決辦法必須比IPv6易于部署。應該只需修改主機,無需改變路由器,在短時間內能與現存的路由器和NAT產品協同工作。

2)遠程訪問

IPSec的一個重要應用是遠程訪問公司的內部網絡。NAT穿越方案必須考慮遠程客戶端與VPN網關之間存在多個NAT的情況。

3)防火墻兼容性

IPSec和NAT兼容性方案應該避免對IKE或IPSec目的端口的動態分配,使防火墻管理員進行簡單的配置,就可以控制穿越NAT的IPSec數據流。

4)可擴展性

IPSec和NAT兼容性方案應具有良好的擴展性,必須保證在大規模遠程訪問的環境中,在大量遠程接入的環境下,同一時間段多個主機和遠程安全網關建立連接。

5)后向兼容性

IPSec和NAT兼容性方案中必須能與已有的IPSec實現互操作。穿越方案應該能自動檢測是否存在NAT,能判斷通信對方的IKE實現是否支持NAT穿越。

6)安全性

IPSec和NAT兼容性解決方案的引入必須保證不得帶來新的安全漏洞。

5利用UDP封裝法實現NAT的穿透

本文中的解決方案是采用UDP封裝法實現NAT的透明穿透,不需要修改現有的NAT網關和路由器。所以該方案具有簡單且易于實現的優點,缺點是由于添加了一個UDP報文頭,而加大了帶寬開銷,但相對于目前持續擴大的傳輸帶寬來說,這個UDP報文頭的帶寬開銷可以忽略不計。下面詳細討論其原理和實現過程。

5.1封裝格式

UDP封裝法是在原有的IP包的IP頭和AH/ESP的數據之間再封裝一個UDP頭,這樣封裝后的數據包端口值對NAT可見,就可以正確的實現端口轉換。UDP封裝格式如圖1所示。

另外,由于IKE已經使用了UDP的500端口,為了簡化配置和避免多個端口帶來的安全隱患,UDP封裝的ESP也使用該端口。這樣就需要采取一定的方法來區分端口500的數據包是IKE消息還是UDP封裝的ESP。為了區分兩者,我們采用在IKE報頭添加Non-ESP標記。在確定存在一個中間NAT之后,支持IPSecNAT-T的對話方開始使用新的IKE報頭。

5.2IKE協商過程

IPSec通信實體雙方是否采用UDP封裝取決于對話對方是否支持該方法以及是否存在NAT設備,這個過程通過IKE協商來完成。在IKE協商過程中增添了新的NAT-D和NAT-OA有效載荷和以及UDP通道類型。

1)新的NAT-Discovery(NAT-D)有效載荷

這個新的有效載荷包含一個散列值,它整合了一個地址和端口號。在主模式協商期間,即IKE協商第一階段第三、四條消息中,IPSec對話方包括兩個NAT-Discovery有效載荷——一個用于目標地址和端口,另一個用于源地址和端口。接收方使用NAT-Discovery有效載荷來發現NAT之后是否存在一個經NAT轉換過的地址或端口號,并基于被改變的地址和端口號來確定是否有對話方位于NAT之后。

2)新的NAT-OriginalAddress(NAT-OA)有效載荷:這個新的有效載荷包含IPSec對話方的原始地址。對于UDP封裝的ESP傳輸模式,每個對話方在快速模式協商期間發送NAT-OA有效載荷。接收方將這個地址存儲在用于SA的參數中。

3)用于UDP封裝的ESP傳輸模式和隧道模式的新的封裝模式

這兩種新的封裝模式是在快速模式協商期間指定的,用于通知IPSec對話方應該對ESP使用UDP封裝。

5.3地址通告和Keepalive包

由于用UDP來封裝IPSec分組的思想只解決了NAPT設備不支持AH和ESP通信的問題。例如TCP校驗和錯誤、UDP端口映射的保持等問題還需要輔助方法來解決。

為保證校驗和正確無誤,通信雙方需將自身的原始IP地址和端口發送給對方,即實現地址通告。地址通告的實現通過IKE第二階段的前兩條消息中的NAT-OA有效載荷。因為NAT-OA有效載荷中包含IPSec對話方的原始地址,為此,接收方就擁有了檢驗解密之后的上層校驗和所需的信息。

消息發起者在NAT中創建了一個UDP端口映射,它在初始主模式和快速模式IKE協商期間使用。然而,NAT中的UDP映射通常超過一定時間沒用就會被刪除掉。如果響應者隨后向發起者發送IKE消息卻沒有提供UDP端口映射,那么這些消息將被NAT丟棄。這個問題的解決辦法是通過定期發送Keepalive包,用于后續IKE協商和UDP封裝的ESP的UDP端口映射同時在NAT中得到刷新,從而保證通信的正常運行。

6結束語

IPSec作為網絡層的安全協議,目前的應用越來越廣泛,已成為構建VPN的基礎協議之一。而由于IPv6取代IPv4將是一個漫長的過程,NAT設備的廣泛存在極大地限制了IP層安全協議IPSec的推廣,因此在目前的條件下,UDP封裝方法無疑是一種在當前環境下無需修改NAT網關和路由器、簡單可接受的解決IPSec和NAT兼容性的方法,具有一定的現實意義。但是該方案還不完善,有待進一步討論和研究。

參考文獻

[1]RFC3022-2001.TraditionalIPnetworkaddresstranslator(TraditionalNAT)[S].

[2]RFC2401-1998.SecurityArchitectureoftheInternetProtocol[S].

[3]RFC2402-1998.IPAuthenticationHeader[S].

[4]RFC2406-1998.IPEncapsulatingSecurityPayload(ESP)[S].

[5]RFC2409-1998.TheInternetKeyExchange(IKE)[S].

[6]RFC3103-2001.RealmSpecificIPProtocolSpecification[S].

[7]AbobaB,WilliamDixon.IPSec-NATcompatibilityrequirements[Z].Internetdraft,draft-ietf-ipsec-nat-reqtstxt,2001

第5篇

1.1計算機軟件C語言的編程技巧

計算機軟件C語言的編程中,最主要的依據是指針應用,C語言指針能夠根據軟件程序的編寫需求,構建可行的函數,而程序員在設計函數編程的過程中,即可通過函數參數的具體分配,設置C語言的指令控制。程序員利用C語言編寫軟件程序時,不僅要準確地控制指令,更重要的是編制C語言的算法。C語言的算法內,體現出諸多應用技巧,利用流程表示的方法規劃操作位置,以此來提高C語言的流程算法。程序員編程軟件C語言時,需要注意語言設置,首先確定C語言在軟件編寫中的對象,如程序運算,保障C語言在編程實驗中的對象;然后分類計算機軟件編程所需的文件,完善文件之間的關聯性,設定C語言編程文件的相關步驟;最后全面檢查軟件C語言編程中涉及的數據,方便編程中的數據查找。

1.2計算機軟件C語言的程序應用

計算機軟件C語言編程實驗中的程序應用,分為函數、算法和運算三個部分。分析如:

(1)C語言在軟件編程中的函數,軟件編程的函數,負責不同的軟件功能,程序員通過C語言定義編程中的函數,由于C語言可以實現編譯,因此軟件編程所需要的函數,可以在系統內直接調用,程序員操作“#include指令”,關聯所有的應用文件,如程序員使用C語言中的sqrt函數,還需引入頭文件#include“string.h”;

(2)算法是計算機軟件編程的核心,C語言在基礎算法的作用下,實現程序表達,程序員需要掌握程序算法,才能保障C語言在計算機軟件中合理性,程序員還要在算法的過程中,添加流程圖,利用流程符號協助算法運行,提高C語言編程的效率;

(3)運算是C語言編程實驗的特色,其對象是二進制,按照計算機軟件的C語言編程,設計程序運算,軟件的C語言編程中包括諸多基礎文件,此類文件是軟件編程的重要部分,程序員將編寫程序存儲到相關的語言內,有利于運算過程中的語言查詢。

2計算機軟件C語言編程的案例

計算機軟件C語言的程序設計比較復雜,以混合軟件編程為例,分析C語言的編程。首先程序員應該根據計算機軟件的運行目的,將運行語句編寫到C語言中,形成源代碼,程序員需要連接C語言中的匯編語句,如:Main(){asm{Movah,2Movbh,5Int10h}}整個編程實驗案例中,C語言的語句匯編存在格式要求,而且格式較為固定,因此,程序員應遵循一定要求,如:檢查語句中是否具備asm,如果缺少asm需重新設定在語句前;確定匯編語句能夠正常嵌入C語言內;注意C語言的分隔符,分隔符必須正確。然后設置編譯代碼,此項模塊需要具備單獨編程,待C語言編程完成后,利用鏈接的方式聯合代碼和編程。混合軟件編程中的C語言,函數部分能夠被匯編使用,多個編程共同組成一項語言任務,而且C語言傾向于獨立編程,基本是以函數的狀態實現軟件的編程實驗。編譯代碼的應用,提高C語言在計算機軟件中的編程能力,保障C語言編程的準確度,強化計算機軟件的實踐性。最后程序員在混合軟件C語言編程實驗中,需注重已經出現的編程問題,尤其是參數、存儲等問題,排除C語言編程的因素干擾。例如C語言編程實驗中出現的參數問題,實際匯編中無法實現正常的參數傳遞,導致參數堆棧傳輸時出現問題,不能正常匯編到C語言的程序內,因此還需在匯編中增加兩類指令,如:sp、pushbppopbp。混合軟件C語言中添加匯編方式,可以提升計算機軟件程序的運行速度,完善軟件編程。

3結語

第6篇

關鍵詞:BEC;存在問題;措施

一、BEC商務英語的概念

劍橋商務英語證書(BEC)考試是教育部考試中心和英國劍橋大學考試委員會合作舉辦的權威性考試。目前分為(BEC1)、中(BEC2)、高(BEC3)三個級別。這三個考試是針對英語為非母語國家的需求而設計的主要在經濟迅速發展、國際交流日益增多的國家和地區實施,具有更廣泛的適用性,因而在國際上受到普遍歡迎。目前已有28個亞洲和歐洲國家或地區,包括一些經濟發達國家已開始舉辦BEC考試。該系列考試是一項水平考試,它根據商務工作的實際需要,從聽、說、讀、寫四個方面對考生在商務和一般生活環境下使用英語的能力進行全面考查,對成績及格者提供由英國劍橋大學考試委員會頒發的標準統一證書。由于該證書的權威性,已成為在所有舉辦該考試的一百多個國家和地區求職的“通行證”。

二、我國考生通過率情況

在各種英語類通行證中,中國考生向來以高通過率而著稱。與此相比,中國的BEC考試通過率卻顯得有些尷尬。

劍橋大學ESOL考試委員會的BEC成績報告顯示:中國考生的通過率明顯低于其他非英語國家考生通過率。2006年5月全球BEC平均通過率是43%,中國考區只有37%,而除中國以外的全球通過率為57—58%。

近幾年來,中國BEC考試報名率以每年300%的速度瘋狂飆升,中國考區的通過率卻一直處于低迷徘徊階段,嚴重拖累了世界的BEC通過率。為什么中國BEC的通過率低于世界水平?BEC考試由寫作、聽力、閱讀、口試四個部分組成,只有A、B、C三類為有效成績。如果有兩個部分為D,那么總體成績就是D,即為無效成績。劍橋大學考試部授權的中國培訓官陳雪翎指出:中國學生寫作、聽力、閱讀、口試的成績往往不在同一個標準上。

三、目前聽力口語教學存在問題

1.缺乏相關商務知識。中國學生之所以在聽力方面常常“敗北”,原因就在于這兩部分對于專業的商務知識要求較高。首先,口話話題往往都是商務方面的,在表述中需運用專業術語、專業語境,如果這方面欠缺,成績自然大受影響。

2.非標準化的英語表達法。由于《新編劍橋商務英語》(中級)為原版引進,沒有中文說明和解釋,所以對于文化背景不同、英語能力有限、商務知識欠缺的廣大中國考生來說,難免感到困難,特別在聽力部分融合了大量口語化的表示法、俚語以及行業術語,與學生平時聽到的標準化的發音迥然不同,加之口音問題,更增加了一定的難度。

3.缺乏相關跨文化背景知識。各民族語言含有大量的文化因素,這是構成民族文化的要素之一。不同的文化之間自然會呈現不同的文化形態,這種文化形態差異反映到語言層面上,則表現為語言差異。傳統商務英語教材以語法操練為主,教學內容單一、陳舊、跟不上現代英語的發展。四、BEC商務英語口語聽力教學的幾項措施

1.針對教材聽力資料。熟悉聽力材料,弄懂段落中所涉及的商務詞匯概念及其Mainidea。在足夠熟悉此段落中的內容后,脫離文字材料先聽一遍磁帶,此時絕對不允許照著文字材料聽,看看自己究竟能聽懂多少,然后把聽不懂或容易出問題的部分特別列出,再聽一遍,此次應特別留心其詞義的語音及商業內涵。尤其是俚語以及行業術語。然后再反復使用錄音機上的重復鍵,盡最大努力聽懂全文內容。

2.朗讀聽力部分的內容。實際上,如果留意,我們不難發現,本教材的聽力材料實際上就是商務化的口語,無論從語音的標準化程度、語法的準確度以及大量語氣詞的運用,都可以說明這一點。所以,這就為我們將聽力與口語結合學習訓練提供了較好的機會和可能。

3.具體到課堂

(1)商務背景知識介紹。由于文化的差異及學生知識結構的問題,加之中外企業管理模式和操作流程的不同,致使學生不了解每個單元所涉及主題的詳細內容。(2)口語的練習。在我國,對于大部分大學生而言,對英語的學習普遍存在比較突出的問題是:語法及詞匯量不是問題,關鍵是聽力及口語。針對這一現象,并結合BEC考試對口語的要求,筆者除每單元中涉及到的Speaking部分需要學生在課堂上用英語探討以外,另外在每學期的期末考試中加入口語測試部分,要求學生在本學期學習的商務知識中,任選一個topic,在全班同學面前做一個Presentation.。

五、考前準備

一般說來,應對BEC中級聽力特別是短文聽力,其備考訓練必須抓住豎聽和橫聽兩點結合來進行。所謂豎聽,是指一套題目從頭聽到尾,從第一題聽到最后一題。所謂橫聽,是指把相同題材和體裁的文章放在一塊對照比較著聽,從而迅速抓住同類型文章的規律,真正做到以不變應萬變。通過這樣反復對比聽,可以使我們很快掌握各種題材文章的模式和考題思路,在短時間內抓住考點,做到舉一反三。

在考前一個月,筆者在此提供一套具體的短文聽力訓練辦法,考生可以從BEC中級歷年考題中選取10篇以上不同題材的文章,橫豎結合起來,進行精聽訓練,以便在考試中贏得時間,確保其準確性。

考前對于口語的訓練,應注意從商務的不同角度,最少選擇10個以上的topic,與同學結對訓練,在注意專業詞匯量積累運用的同時,盡量做到熟練,要言之有物,觀點突出。

總之,BEC中級短文聽力及口語并不可怕,如果我們能夠宏觀把握,平時堅持“用心去聽”,認真練,我們肯定能夠從不同角度、不同層次提高自己的商務英語語言能力,順利通過BEC考試。

參考文獻:

第7篇

行動導向教學模式是引用德國職業教育的一種先進的教學理念,這種教學模式從根本上改變了傳統的教學方法,它是一種職業化的教育模式,是目前高等職業教育主要采用的一種教學模式。行動導向教學模式在教學具體實施過程中,不是單一的教學方法,也不是簡單的幾種教學方法的結合,而是由一系列具體的教學方法有效的結合在一起,相輔相成,揚長避短。項目教學法,是行動導向教學模式中的一種教學方法,是指老師和學生共同完成一個項目,在項目的實現過程中,需要學生獨立完成資料查詢、項目的研究和學習,項目教學法使學生在學習過程中更具有針對性和實用性,為今后就業所必須的實踐能力、綜合能力、信息交流能力、團隊合作能力、分析問題以及解決問題的能力奠定了基礎。

二、基于行動導向的項目教學法在C語言課程教學中的具體應用

C語言程序設計課程采用項目教學法進行教學改革,其主要目的是培養學生自動學習、解決問題的能力。培養學生具有團隊意識和服務意識,具有良好的職業道德和職業素養的技術技能型人才。按照行動導向項目教學法的實施步驟,C語言課程的整個教學過程中大體分為收集資料階段、制定項目教學計劃階段、項目教學的實施階段、項目教學的檢查評估階段。具體步驟如下:

1.收集資料階段。

老師帶領學生通過問卷調查、資料查閱、需求分析等手段廣泛深入地進行項目調研,將調研數據加工整理,篩選出適合高職院校學生特點的項目形成項目庫。主要包括學生管理系統、檔案管理系統、圖書管理系統等10個項目,這些項目的主要特點是貼近學生的生活,學生比較好理解而且參考資料豐富。

2.制定項目教學計劃階段。

先由任課教師討論,制定項目教學課程標準和教學計劃,確定項目教學的步驟和教學使用的項目程序。項目的教學計劃主要包括以下兩方面內容:

2.1C語言程序設計課程項目教學的課程標準。

制定C語言程序設計這門課程項目教學法的課程標準要依據該課程的性質、目標以及內容等特點,結合高職院校的實際情況,針對不同層次的學生在知識與技能的掌握、過程與方法的運用等方面提出教學和評價建議。通過課程標準的制定,使學生在經過一段時間C語言的學習后,應該知道什么是C語言和C語言能做什么。該課程的課程標準主要包括C語言的課程性質、課程目標、學習內容、實施建議、考核方式等方面的內容。

2.2C語言程序設計課程項目教學授課計劃。

通過授課計劃的編寫,對C語言程序設計這門課程進行整體規劃,按照項目教學的要求,要有針對性、目的性、可行性的將教學內容總的方向、總的結構、課時分配等作出全面安排。授課計劃的編寫要在科學的教育理論指導下,深入研究教材和《課程標準》,靈活安排教學內容,實現教學目標。

3.項目教學的實施階段。

3.1項目教學法的課前準備。

根據項目教學計劃和學生本身的特點,任課教師在上課前應做好充分的準備,按照教學計劃準備教學課件、教案、教學材料,按照項目教學法對學生進行分組設計,分組時,根據學生的學習水平的差異,好壞混合搭配,勢力均衡,目的是好同學帶動壞同學。

3.2項目教學法的任務分配。

教師根據項目中的情景,布置任務。首先由教師引導學生分析任務,提出完成任務的相關知識點、設想或探索的路徑供學生參考,然后根據學生實際情況分組討論,根據教師提供的信息,查閱資料或尋求教師的指導,最終完成任務。

3.3項目教學法的任務實現。

該階段的任務是任務教學法最主要的一部分。教師在下達任務階段引導學生掌握完成任務的思路和方法后。在任務完成過程中,以學生為主,每個小組成員根據教師的指導,學習相關的理論知識,通過查閱相關資料、交流討論等方法將理論知識向實踐轉化,即項目的代碼編寫、調試和運行,完成分配的任務。

3.4項目教學法的項目成果展示。

在各小組完成學習任務以后,每組選派一名本組成員進行成果展示與交流。其他小組成員可根據任務相關的知識點提問疑問或請教交流,豐富彼此的學習體驗。最后,教師對學生完成的項目情況歸納總結并引導學生對項目完成過程中遇到的問題進行反思以便對下一次的學習設計進行優化、改進。

4.項目教學的檢查評估。

C語言程序設計這門課程項目教學的考核應根據課程標準中的目標和要求,結合項目教學的過程和成果,進行綜合打分。考核評價過程主要分為平時考核和期末考核,其中,平時考核包括平時上課學生完成每個學習情境的情況和出勤情況,先由學生對自己完成的情景任務進行答辯,再由教師檢查評分,其成績占總成績的50%;期末考核為上機操作考試,其成績占總成績的50%,考試題目通過抽簽選取,題目的內容為學習情境中的同類型任務。最終成績是平時考核成績和期末考核成績的總和。使對學習過程和對學習結果的評價達到和諧統一的目標。

三、基于行動導向的項目教學法在c語言課程教學實施過程中面臨的困難與對策

第8篇

C語言是一種計算機程序設計語言,是計算機匯編語言的重要組成部分。其實質就是通過對語言進行編寫和翻譯,使其產生一種與社會相銜接的語言,讓人和計算之間通過這種語言能夠進行簡單的交流。C語言是在1972年由美國貝爾研究所提出,1978年先后被運用到各種機型中。C語言具有雙重性,具備高級語言的特點和匯編語言的優越性,不僅能對系統應用程序進行編寫,而且能對不依靠計算機硬件的應用程序進行編寫。同時C語言也具有廣泛的應用性,能在多個計算機的操作系統中運用,大大提高了計算機軟件編程的效率。隨著計算機的日益普及,C語言的應用領域越來越寬,成為目前較為流行的高級程序設計語言之一,在許多大型的軟件編程中被廣泛的應用。C語言具有如下的特點:

1.1模塊化思想模塊化的基本思想就是運用C語言在進行計算機軟件編程設計時,按功能作用的不同將一個較大的程序分割成為許多小的子模塊,使每個小的子模塊成為一個功能單一、理解簡單和結構合理的小程序。

1.2簡潔性強C語言具有語言簡潔、結構緊湊、使用方便、靈活的優勢。C語言包含了32個關鍵字和9條控制語句,源程序書寫方式較自由靈活,因此在計算機軟件編程中要選擇使用小寫字母,壓縮掉所有不重要的部分。

1.3運算范圍廣C語言總共具有34種運算符,其運算符號十分豐富且對運輸結果能采用各種各樣的表達形式,因此C語言的數據處理能力強,可以為各類數據結構進行復雜的運算,進行一些高級語言較難實現的運算功能。

1.4移植泛用性C語言在進行軟件編程中基本上不需要做任何的修改,就能運用于各種不同型號的計算機和操作系統環境上,從而形成很多不同版本的C語言。

1.5應用效率高C語言的應用結構簡單清晰,能夠對內存中的相應地址進行直接的訪問,操作十分方便,被稱為高級語言中的低級語言。同時能夠直接調用系統功能,直接操作硬件,具備許多高級語言所不具備的高效率。

2.C語言在計算機軟件編程中的技巧

C語言具有模塊化的特點,因此在計算機軟件程序編程中,充分發揮C語言的靈活性和方便性,提高軟件編程的技巧性,能夠優化軟件程序編輯和提高軟件開發的效率和質量。

2.1變量數據和運算模式的合理設置設置變量數據時,要在最大限度滿足計算機軟件編程需要的前提下,盡可能合理的設置變量數據,使用無符號的最小數據類型,這樣能減少程序代碼,從而促進計算機軟件編程的有效運行。同時在設置運算模式時,要盡量運用定點運算,避免運用浮點運算。

2.2變量存貯器類型的合理定義在計算機軟件編程中,采用和操作不同類型的變量存貯器時,會造成編譯后的代碼執行效率各不相同,只有合理定義變量存貯器類型,才能不斷提高程序的執行效率。因此在定義變量存貯器類型時,應在滿足條件的情況下盡量選用內部直接尋址存貯器。

2.3變量存貯類型的靈活設置在計算機軟件編程中,C語言具有模塊化思想,正確函數變量的傳遞在編程中十分重要,因此子程序模塊使用的變量常采用局部變量,而整個程序模塊使用的變量要采用全局變量。另外在C語言中靈活使用指針、結構和聯合,也便于數據的傳遞,提高軟件編程的效率。

2.4設計軟件編程與C語言的接口C語言具有程序執行速度快和直接操作硬件的優勢,在進行數據采集、中斷服務器處理和實時控制時,可以將C語言程序運用到計算機軟件編程中,自行控制數據的傳遞,從而能夠精確控制任務,加快實時響應。

2.5編譯控制指令的正確選擇C語言能為計算機的軟件編程提供了20多條控制指令,總體可分為首要控制指令和一般控制指令,首要控制指令的選擇只能用一次,要放在源程序的開始處,以防止重復而導致停止編譯,而一般控制指令的選擇可以多次。因此選擇正確的控制指令,能加速程序調試過程。

3.C語言在計算機軟件編程中的應用

C語言具有很強的優越性,可以適用于計算機軟件編程實驗研究,這就需要對C語言在計算機軟件編程中的應用有一個全面的認識,避免在以后的程序設計過程中出現基礎不足的情況。

3.1指針的應用C語言中的指針代表相關變量、相應函數的地址和地址相對應的存儲內容。在進行軟件編程時,如果一個相應的變量聲明前面,出現“*”號,那就表示這個內存地址相對應的存儲內容。通常情況下C語言的一個指針代表著一個相應函數的地址,是一個常量。此外,C語言的指針可以在調用函數時得到幾個不同于return(z)的返回值。

3.2字符串在C語言中,字符串是一種以ASCII的UNL作為數組退出的一種chair型的數組,在計算機軟件編程中,字符串的使用一般不需要引用庫。但在C標準庫中包含著一些函數可以操作相應的字符串,在使用這些函數時,需要運用相對應的頭文件進行引用。

3.3C語言結構C語言主要包括三種結構模式即順序結構、選擇結構和循環結構。順序結構在C語言中是按照先后次序進行操作,通過構建一個相對簡單和完整的程序,進行相對獨立的運用。循環結構是在進行各種數據運算和處理時,需要對其中的一些語句進行反復的執行,這在一定程度上簡化了程序的長度,使程序變得簡潔。選擇結構是根據相關的分支條件選擇相應的執行路徑,在計算機軟件編程中要選擇具有較強適應性執行路徑。

第9篇

論文關鍵詞:函數,指針

 

0 引言

隨著計算機技術的飛速發展及應用領域的擴大,熟練掌握一門語言已變的尤為關鍵。C語言這門課程在計算機的基礎教學中一直占有比較重要的地位,然而要想突破C語言的學習,對函數和指針的掌握是非常重要的,本文將具體針對函數和指針的關系做詳盡的介紹。

1 函數的有關概念

為了使程序的編寫更加清晰、直觀且易于修改,C語言中引用了函數。所謂函數,就是一個程序模塊,該模塊用來完成一個特定的程序功能。引用一個函數時,需要包括對函數的定義、聲明,繼而調用。此外,函數主要包括庫函數和用戶定義函數,調用庫函數時,要用#include命令將相關的頭文件包含進來。在掌握函數相關概念的同時,有以下幾點需要注意:

(1) 函數的定義是平行的,不能在一個函數的內部再定義函數,而只能在一個函數中調用另外一個函數,例如:

int A(int a,…)

{

聲明部分;

int B(int b,…)

{

聲明部分; 執行部分;

}

執行部分;

}

(例1-1)

顯然畢業論文ppt,這種定義函數的方法是錯誤的,在函數A中不能包括對函數B的定義。正確的定義方法如下:

int A(int a,…)int B(int b,…)

{{

聲明部分; B(a,…); 執行部分;聲明部分; 執行部分;

}}

(例1-2)

其中,函數A中是可以調用函數B的。

(2) 調用函數和被調用函數

由上例1-2可以看出,函數A在執行的過程中包括了對函數B的調用,則函數A稱為調用函數(調用函數B),而函數B被函數A調用,稱為被調用函數論文開題報告。

(3) 實參和形參

調用函數中定義的變量是實參,被調用函數中定義的變量是形參。如例1-2,函數A中的變量a是實參,函數B中的變量b是形參。

(4) 實參變量和形參變量之間的獨立性

實參變量和形參變量之間只存在值的傳遞過程,實參變量的存儲空間在調用函數中分配,而形參變量的存儲空間在被調用函數中分配,被調用函數執行完畢后,其所分配的存儲空間被釋放,即形參變量的存儲空間被釋放,它不會返回值給實參變量,也不會參與調用函數的繼續執行。例如(實現兩個數的交換):

main( ) voidswap(int a, int b)

{{

int a, b; intc;

swap(a,b); c=a;a=b; b=c;

printf(“%d,%d”,a,b);printf(“%d,%d”,a,b);

}}

(例1-3)

顯然,函數main是調用函數(調用函數swap),函數swap是被調用函數。main函數中的a,b由main函數分配存儲空間,而swap函數中的a,b由swap函數分配存儲空間。main函數執行到swap函數時,調用swap函數,swap函數為其變量分配存儲空間,然后實現了swap函數中變量a,b的值交換,執行完畢后即釋放其分配變量的存儲空間。繼而,main函數繼續執行,但其變量a,b沒有做任何改變,即main函數不能實現a,b的交換。由上例可以看出,若單純的使用變量,則被調用函數無法改變調用函數中的變量值,即swap函數無法實現main函數中變量a,b的交換。

2 指針的有關概念

指針是C語言中功能最強大,使用最廣泛的一種數據類型,主要用于描述存儲單元的地址。通過使用指針,可以在函數中進行傳址調用;規范的使用指針,可以使程序簡潔、緊湊、高效。

(1) 指針變量的定義

定義指針變量的一般形式:類型標識符 *變量名;其中畢業論文ppt,變量名前的符號“*”表示將要定義的變量,類型說明符表示該指針變量所指向數據的類型。例如:

int *p1; char *p2;float *p3;

分別定義了整形指針變量p1,字符形指針變量p2,以及浮點形指針變量p3。

(2) 指針變量的引用

&為取地址運算符,該運算符是一個單目運算符,運算結合性為自右至左,它返回其右邊變量在內存中的地址。其一般形式為:&變量名,例如:

int x=3,*p; p=&x;指針變量p指向變量x。

在使用x的值時,可以直接使用x,也可以用*p來代替使用x。此外,指針變量一定是和它所對應的變量相互引用,即指針變量在使用時一定要有明確的指向,必須賦予具體的值,否則將可能導致錯誤。

3 指針與函數的關系

在函數的編寫過程中,若單純的只用變量參數,則無法實現被調用函數改變調用函數中變量值的目的。而為了實現這一目的,就需要函數和指針之間的結合使用論文開題報告。

(1) 引用指針,可以實現調用函數和被調用函數中的指針變量共同指向調用函數中的存儲單元,從而實現被調用函數改變調用函數中變量值的目的。例如:

main()void change(int *p2)

{{

int a,*p1;*p2=3;

a=2; p1=&a;}

change(p1);

printf(“the value of a is:%d”,a);

}

由上例可以看出,在調用函數(main函數)中定義了變量a和指針變量p1,被調用函數(change函數)中定義了指針變量p2。程序首先從main函數開始執行,分配變量a和指針變量p1的存儲單元,此時指針變量p1指向變量a(p1=&a)。當程序執行到change函數時,程序跳轉到change函數執行其函數體,change函數為其指針變量p2分配存儲單元,同時p2也得到了p1傳過來的值(變量a的地址),此時p2也指向了調用函數中的變量a,即實現了p1和p2共同指向了調用函數中的存儲單元(變量a的存儲單元),change函數執行其函數體(*p2=3),即使a的值變為3。change函數執行完畢后,釋放其變量的存儲空間,轉而繼續執行main函數,此時a的值已經發生改變(由2變為3),實現了被調用函數改變調用函數中變量值的目的。

(2) 調用函數和被調用函數中實參和形參之間的關系圖

被調用函數執行完畢后畢業論文ppt,釋放它所分配的存儲單元,而調用函數分配的存儲單元仍繼續使用。此外,只有當調用函數中傳指針值(即實參是指針值),而被調用函數中引用變量(即形參收到指針值后,在函數體內引用變量值),才能達到改變的目的。

例如,實現變量a和b的交換,程序如下:

main()

{

inta,b,*x,*y;

a=2; b=5;

x=&a;y=&b;

swap(x,y);

printf(“%d,%d”,a,b);

}

void swap(int *x, int *y)void swap(int *x, int *y)

{ {

int *t; int*t;

t=x; x=y; y=t;*t=*x; *x=*y; *y=*t;

} }

(例1) (例2)

例1雖然傳的是指針值,但在函數體的執行過程中引用的仍然是指針值(引用x和y),所以不能實現a和b的交換;例2程序傳指針值后,引用變量(*x和*y,即a和b),所以能實現a和b的交換。

4 結束語

在以后的編程過程中,若遇到想通過被調用函數改變調用函數中變量值的目的,則可以把該變量的地址值傳給被調用函數,從而達到改變的目的。鑒于文章篇幅及個人能力有限,本文肯定還存在許多不足之處,僅供大家學習和參考。

參考文獻

[1]譚浩強.C程序設計(第二版).清華大學出版社,2004.

[2]杜友福.C語言程序設計(第二版).科學出版社,2007.

[3]陳志泊,王春玲.面向對象的程序設計語言――C++.人民郵電出版社,2002.

相關文章
相關期刊
波多野结衣人妻| 妖精视频一区二区| 国产午夜在线视频| 日本aⅴ亚洲精品中文乱码| 色哟哟网站入口亚洲精品| 日本999视频| 成年人在线看| 国产高清成人在线| 国产91精品久久久久| 69xxx免费| www.久久爱.com| 午夜精品福利久久久| 色姑娘综合网| 亚洲国产精品欧美久久| 亚洲美女黄色| 色吧影院999| 人妻无码中文久久久久专区| 欧美私密网站| 亚洲精品菠萝久久久久久久| 欧美精品七区| 亚洲成人第一区| 亚洲中字黄色| 久热精品在线视频| 好吊视频在线观看| 日韩护士脚交太爽了| 天天影视涩香欲综合网| 26uuu成人| 亚洲精品97久久久babes| 麻豆一区二区在线| 欧美一区二区三区精品电影| 中文字幕av免费在线观看| 国产无遮挡裸体免费久久| 欧美日韩一区在线| 亚洲自偷自拍熟女另类| 日本www在线观看| 久久婷婷国产综合精品青草 | 国产精品原创| 亚洲精品中文字幕乱码三区| 五月天色一区| 色播在线视频| 国产1区2区3区精品美女| 国产精品电影久久久久电影网| 国产主播在线观看| 色狮一区二区三区四区视频| 精品中文视频在线| 久久福利小视频| 欧美黄页在线免费观看| 欧美中文字幕一区二区三区| 激情五月开心婷婷| 日本大胆在线观看| 亚洲啪啪综合av一区二区三区| 欧美精彩一区二区三区| 内射后入在线观看一区| 久久av资源网| 国产日韩欧美夫妻视频在线观看| 黄色av网站免费观看| 你懂的一区二区| 欧美成人免费视频| 看片网站在线观看| 久久人体视频| 久久久av网站| a在线视频播放观看免费观看| 国产精品一区二区99| 亚洲欧洲在线观看| 国产精品成人无码免费| 欧美国产不卡| 国产午夜精品久久久| 欧美熟妇精品黑人巨大一二三区| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 欧洲一区二区在线| a视频在线看| 不卡的av中国片| 加勒比在线一区二区三区观看| 亚洲三区在线播放| 不卡在线视频中文字幕| 国产伦精品一区二区三区视频孕妇| www日本视频| 国产精品一区二区x88av| 99久热re在线精品996热视频| 亚洲精品久久久久avwww潮水| 国内精品自线一区二区三区视频| 91久久精品国产91久久性色tv| 亚洲爱爱综合网| 国产精品自拍三区| 成人片在线免费看| 亚洲AV成人无码一二三区在线| 成人国产亚洲欧美成人综合网| 黑人巨大精品欧美一区二区小视频| 情趣视频网站在线免费观看| 91亚洲永久精品| 婷婷五月色综合| 97最新国自产拍视频在线完整在线看| 日韩久久一区二区| av网站手机在线观看| 亚洲wwwww| 性欧美疯狂xxxxbbbb| www.亚洲天堂网| www.51av欧美视频| 欧美日韩中文字幕一区二区| www.国产区| 亚洲欧美在线成人| 欧美在线观看日本一区| 三日本三级少妇三级99| a屁视频一区二区三区四区| 欧美精品v国产精品v日韩精品 | 性色视频在线| 永久免费成人代码| 免费黄色一级网站| 天天射,天天干| 91片黄在线观看| 91色视频在线观看| 最近2019年手机中文字幕| 国产成人av电影在线观看| 国产免费区一区二区三视频免费| 亚洲精品美女| 国产精品久久久久久av福利| 国产精品欧美激情在线| 国内成+人亚洲+欧美+综合在线| 99久热re在线精品视频| 色视频www在线播放| 久久久综合视频| 区一区二区三区中文字幕| 国产女主播在线直播| 亚洲女性喷水在线观看一区| 日韩一级性生活片| 乡村艳史在线观看| 69堂成人精品免费视频| 精品无码国产一区二区三区51安| 9l视频自拍蝌蚪9l视频成人| 中文字幕在线日韩| 久久久久久久伊人| 国产亚洲一区二区三区啪| 成人在线一区| 影音先锋成人在线电影| 不卡在线一区二区| 黄在线免费看| 九九视频在线免费观看| 亚洲黄色网址在线观看| 日韩一二三在线视频播| 国产欧美日韩一级| 成人涩涩免费视频| 天天久久夜夜| 日本又骚又刺激的视频在线观看| 成人在线观看小视频| 日韩精品国内| 欧美激情亚洲一区| 性感美女久久精品| 欧美另类69xxxxx| 1区2区3区在线| 中文字幕不卡三区视频| 一区在线观看免费| 欧美狂野激情性xxxx在线观| 99只有精品| 日韩一区二区视频| 国产又色又爽又高潮免费| 午夜激情久久| 国产精品免费在线免费| 理论片在线观看理伦片| 亚洲国产日产av| 日本泡妞xxxx免费视频软件| 水蜜桃精品av一区二区| 国产精品www网站| 小草在线视频在线免费视频| 亚洲国产日韩一级| 日本亚洲一区二区三区| 国产一级做a爰片久久毛片男| 国产日韩欧美在线播放| 欧美人成在线视频| 欧美xxxx18性欧美| 欧美一区二区三区在线视频| 成人h版在线观看| 亚洲精品偷拍| 你懂的亚洲视频| 激情亚洲综合在线| 91在线免费网站| 伊人网在线视频| 亚洲伦理久久| 精品国产精品网麻豆系列| 国产aaaaaaaaa| 亚洲精品电影院| 欧美成人手机视频| 女人18毛片毛片毛片毛片区二| 国产真实乱人偷精品| 一道本在线免费视频| 国产精品区一区二区三在线播放| 海角国产乱辈乱精品视频| 在线亚洲欧美视频| xx视频.9999.com| 欧美精品九九99久久| 亚洲人成人一区二区在线观看| 日本一区二区综合亚洲| 激情图区综合网| 国产精品日韩精品欧美精品| 99精品女人在线观看免费视频 | 91视频免费播放| 激情av综合网| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品大片| 影音先锋久久精品| 在线免费高清一区二区三区| 久久网站免费观看| 日本电影一区二区| 国语产色综合| 成人av动漫在线观看| 在线精品视频一区| 成人高清一区| 国产999精品在线观看| 久久精品国产精品亚洲毛片| 69堂免费精品视频在线播放| 999福利在线视频| 亚洲v.com| 国产剧情一区二区在线观看| 亚洲精品v亚洲精品v日韩精品| 久久精品免视看国产成人| 国产精品一线| 欧美日韩国产一区二区三区不卡| 欧美a级大片在线| 主播大秀视频在线观看一区二区| 欧美aaa视频| 欧洲一区在线| 日韩激情毛片| 日韩欧美精品综合| 尤物精品在线| 极品尤物av久久免费看| 粉嫩av亚洲一区二区图片| 久久色成人在线| 亚洲美女淫视频| 欧洲一区在线观看| 日韩一区二区免费电影| 自拍视频国产精品| 久久影院中文字幕| 国产精品久久久91| 国产美女精品久久久| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 日本老太婆做爰视频| 日本黄色三级大片| 色网站在线视频| 人妻在线日韩免费视频| 99精品久久久久| 亚洲视频在线观看免费视频| 亚洲精品国产手机| 91porn在线观看| 久久青草视频| 欧美另类69xxxxx| 久久久影院免费| 老色鬼精品视频在线观看播放| 国产福利一区二区| 亚洲天堂精品在线观看| 亚洲成人av一区二区三区| 欧美电影在线免费观看| 午夜电影久久久| 亚洲国产精品va在线观看黑人| 97视频在线观看视频免费视频| 国产精品99导航| 国产日韩一区欧美| 一级性生活视频| 视频免费在线观看| www.国产com| 在线视频中文字幕| dj大片免费在线观看| 电影一区中文字幕| 欧美精品九九| 亚洲图区在线| 免费看亚洲片| 久久久影视传媒| 欧美片在线播放| 久久精品99久久香蕉国产色戒| 成人精品一区二区三区| 黄色片网址在线观看| 亚洲天堂岛国片| 麻豆视频在线观看| 亚洲人妻一区二区三区| 亚洲成人av观看| 欧美三级伦理在线| 狠狠狠色丁香婷婷综合久久五月| 亚洲视频1区2区| 91精品国产91久久综合桃花| 欧洲亚洲在线视频| 国内一区二区三区在线视频| 人人干人人干人人| 久久精品www人人爽人人| 午夜成在线www| 精品网站999| 国产综合久久| 亚洲精品第一国产综合野| 亚洲视频777| 成人欧美在线视频| av高清在线免费观看| 国产高潮国产高潮久久久91| 亚洲男人资源| 国产亚洲精彩久久| 美女精品在线观看| 色婷婷综合激情| 国产成人精品网站| 国产成人亚洲综合无码| 欧洲猛交xxxx乱大交3| 久久电影中文字幕| 国产欧美日韩影院| 久久久久国产精品麻豆| 亚洲精品有码在线| 欧美日韩精品免费观看视一区二区| 天天躁日日躁狠狠躁av| 手机在线观看免费av| 精品一区二区三区在线观看视频| 久久国产福利| 欧美色精品天天在线观看视频| 国产精品一区二区三区在线播放| 色噜噜狠狠永久免费| 99久久99久久久精品棕色圆| 亚洲高清影院| 成人黄页毛片网站| 国产香蕉一区二区三区在线视频| 国产一区免费视频| 中文幕无线码中文字蜜桃| 在线播放中文字幕| 精品国产91乱码一区二区三区四区| 国产精品视频一二| 久久综合伊人77777蜜臀| 黄网站欧美内射| 中文字幕永久在线观看| 婷婷综合国产| 国产精品乡下勾搭老头1| 精品在线欧美视频| 精品无码一区二区三区爱欲| 国产又粗又长视频| 国产亚洲精品精品国产亚洲综合| 99国产精品国产精品毛片| 欧美疯狂性受xxxxx另类| 国产成人亚洲精品无码h在线| 91好色先生tv| 欧美日韩视频免费观看| 成人黄页在线观看| 欧美老少做受xxxx高潮| 97公开免费视频| av在线不卡播放| 在线成人国产| 亚洲精品www| 999香蕉视频| 凸凹人妻人人澡人人添| 亚洲乱码在线| 日韩一区二区三区电影在线观看| 欧美一区亚洲二区| 久久久久99精品| 给我免费播放日韩视频| 日韩一区欧美小说| 91九色视频在线| 免费成人美女女在线观看| 国产视频中文字幕在线观看| 乱人伦精品视频在线观看| 中文字幕欧美日韩精品| 亚洲三级在线观看视频| 一个人免费观看视频www在线播放| 中日韩免视频上线全都免费| 亚洲视频中文字幕| 国产区精品视频| 娇小11一12╳yⅹ╳毛片| 国产黄色小视频在线| 香港欧美日韩三级黄色一级电影网站| 欧美日韩人人澡狠狠躁视频| 蜜桃免费一区二区三区| 九九精品视频免费| 波多野在线观看| 国产福利一区二区三区| 北条麻妃99精品青青久久| 日韩网站在线播放| 2024最新电影在线免费观看| 99久久综合色| 欧美一区二区大胆人体摄影专业网站| 国产又粗又猛又爽又黄| 制服丝袜在线播放| 久久亚洲精品小早川怜子| 性色av一区二区咪爱| 国产吞精囗交久久久| av电影在线网| 葵司免费一区二区三区四区五区| 欧美成人亚洲成人日韩成人| 亚洲女人在线观看| 欧美成熟毛茸茸| 青青草91视频| 久久久久中文字幕2018| 久久国产精品免费看| 久久人体视频| 久久精品国产91精品亚洲| 国产无套在线观看| 99精品视频免费观看| 国产精品久久久久久久久免费看| 亚洲图片欧美在线| 国内外成人在线| 国产精品看片资源| 国产激情视频在线播放| 白白色 亚洲乱淫| 欧洲成人一区二区| 超碰免费97在线观看| 成人免费小视频| 成人免费观看cn| 成人日韩av| 亚洲第一中文字幕在线观看| 在线观看亚洲大片短视频| 日韩欧美中字| 日韩av免费一区|