c語言實現原理
⑴ c語言工作原理
作為一種編程語言,本身是談不上工作原理的,實際上C語言所有的語法,正是C語言編譯器的工作原理或者工作機制的具體實現。要細致的討論起來是不可能,但是作為C語言程序員,必須了解這個大致的流程。一個程序,從C語言源碼,到系統可執行的文件,一般經歷四個過程。
1、預處理階斷,這個階斷是文本處理階斷,有預處理器來完成,會將源碼中的帶"#"開頭的預處理命令進行相應的處理,在Linux上C語言的預處理器程序是cp命令。
2、編譯階斷,這個階斷是有C語言編譯階斷,在Linux上C語言的編譯器是cc命令,它將C語言源碼轉換成匯編指令。
3、匯編階斷,這個階斷是匯編編譯階斷,在Linux上C語言的匯編器是as命令,這個階斷會將匯編指令編譯成二進制機器碼。
4、鏈接階斷,這個階斷是會將匯編階斷生成的機器碼目標文件,裝載成一個系統可執行的文件,在Linux平台以ELF格式進行組裝,在Windows平台上以PE格式進行組裝。在Linux平台上的鏈接器命令為ld,在windows平台上的鏈接器命令為linker。
⑵ 遠程監控的原理和實現如何用c語言實現
以人工氣候室遠程監控系統為例2.1通信介面-----套接字的創建本文所要實現的是對一個小型人工氣候室的遠程監控,在異地或同一個區域網范圍內,可以不必親臨現場就可以觀測到人工氣候室當前的溫度狀況和運行中的溫度曲線,由於在遠端只是需要查詢和觀察,因此只要處理好現場監控計算機和遠端客戶機之間的通信和數據傳輸就可以了。這樣不用佔用現場計算機的CPU處理時間,從而能節省資源以便做更多的處理現場的工作。和遠端伺服器的連接可以分為以下幾個過程:(1) 服務進程總是先於客戶進程啟動,服務進程首先創造套接字。(2) 將本地地址綁定到所創建的套接字上以使在網路上標識該套接字。 (3) 將套接字置於監聽模式並准備接受連接請求。(4) 客戶端創建套接字,調用SOCKET函數,方法同上。(5) 客戶向伺服器提出連接請求。(6) 當請求到來時,被阻塞服務進程的accept()函數如(3)中所述生成一個新的套接字與客戶端建立連接,並向客戶端返回接收信號。(7) 一旦客戶機的套接字收到來自伺服器的接收信號,則表示客戶機與伺服器的連接已就緒,則可以進行數據傳輸了。(8) 關閉套接字。一旦任務完成,就必須關掉連接已釋放套接字佔用的資源。創建連接的伺服器端和客戶端代碼簡述如下:伺服器端:void CServerView::OnStart ()
{ Started=TRUE;
m_Start.EnableWindow(!Started);
try
{ g_sListen.Create(6802,SOCK_DGRAM,NULL);
g_sListen.Bind(6802,m_IP);//,6802為埠號,m_IP為伺服器端IP地址
g_sListen.Listen();
((CServerDoc*)GetDocument())->g_pchatListen=new CChatLsnSock(
(CAnyServerDoc*)GetDocument());
CChatLsnSock* g_pchatListen=((CAnyServerDoc*)GetDocument())->g_pchatListen;
g_pchatListen->Create(9999,SOCK_STREAM);//偵聽聊天室連接套接字創建
g_pchatListen->Listen();
GetDlgItem(IDC_RESPONSE)->SetWindowText("開始對客戶端服務!");
}
服務端開啟後的運行界面如圖1所示。
客戶端:
void CClientView::OnClientStart()
{m_sockRecv.Create(6801,SOCK_DGRAM,m_ClientIP);//6801為埠號,m_ClientIP為客戶端IP<br>m_sockRecv.Bind(6801,m_ClientIP);<br>m_timer1=SetTimer(1,1000,NULL);<br>m_timer2=SetTimer(2,250,NULL);<br>GetLocalTime(&SysTime);<br>m_StartTime=SysTime;<br>m_WavePlay.SetStartTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);//畫出曲線初始時間<br>this->m_CurrentSysTime.SetFocus();<br>}
2.2網路中的數據傳輸與監控實現基於網路的遠程式控制制和測量應用中,一般數據傳輸採用二進制格式是主叢式,在人工氣候室的遠程監控系統中,通信雙方需要傳輸的數據流量少,下位機一般是微控制器等嵌入式系統,數據處理能力較慢,通信雙方也不必保持緊密聯系,因此大多採用UDP協議,基於點對點的方式,雙方通信的數據可靠性可以通過定義數據表示格式來保證。另外採用把通過網路傳輸過來的數據在客戶端用曲線的形式重畫顯示,用了一個本人自做的一個ActiveX控制項來顯示接收的數據,在數據傳輸過程中存在的滯後時間很短,可以忽略不計。在設備運行時,伺服器端的狀態一直保持開啟,測溫元件把測量到的溫度值傳入到控制微機,同時通過網路傳到遠程客戶端,遠程連接通過輸入伺服器端的IP地址,輸入指定的用戶名和密碼,就可以連接上,從而就實現了遠程監控。建立連接後客戶端就可以接收發送過來的溫度值且用曲線形式顯示出來:void CClientView::OnDataReceive()
{
extern CListBox* pmyListBox;
char szTempRecv[20];
CString szIP(m_IP);//得到伺服器端的IP
UINT uPort=6802;//指出埠
int iTempRecv=m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
szRecv[iRecv]='\0';
m_szRecv=szTempRecv;
m_listBox.AddString((LPCTSTR)m_szRecv);
int nCount=m_listBox.GetCount();
if (nCount > 0)
m_listBox.SetCurSel(nCount-1);
GetLocalTime(&SystemTime);
m_NowTime=SystemTime;
CString strSysTime;
strSysTime.Format(_T("%d-%d-%d %d:%d:%d"),SystemTime.wYear,SystemTime.wMonth,SystemTime.wDay,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);
UpdateData(FALSE);
CurABSTime=(m_NowTime-m_StartTime).GetTotalSeconds();
m_WavePlay.SetPoint2(CurABSTime,atoi(m_szRecv));//用自做ActiveX控制項畫出溫度曲線
完成後通過遠程登錄看到的運行界面
⑶ C語言是什麼,原理是什麼。
C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫。具體應用比如單片機以及嵌入式系統開發。
⑷ c語言簡單順序程序設計原理是什麼
什麼順序程序啊?是
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等
⑸ 請問什麼是c語言請說明原理和規律!拜託了!
一、C語言的特點:
1. C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。
4. C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。
C語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟體也是用C語言編寫的。
二、 C語言的模型:
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(包括include 命令、if命令、pragma命令),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔