『壹』 c語言能幹什麼 C語言的這些用處你知道嗎
1、C語言可以做嵌入式開發。如51單片機、ARM等。
2、C語言可以寫漂亮的界面。以windows開發為例,你可以學習《windows程序設計(第五版)》,學完就可以寫出界面來。還有一些開源庫界面庫,例如soui也是用C寫出來的。
3、C語言可以做伺服器開發,現在的游戲伺服器端大多都是C/C++開發的。《windows核心編程》裡面的例子就是用C寫的。
4、C語言可以寫游戲。cocos2d—x就是C/C++寫的。DirectX也是。
5、C語言可以寫驅動程序。windows下各種硬體驅動都是C/C++寫的。騰訊游戲保護軟體(TP)也是驅動程序。
6、C語言可以寫外掛。想學寫外掛的童鞋們可以看看鬱金香的外掛編程視頻教程。
7、C語言可以做視頻圖片流媒體處理。有興趣的朋友可以學習一下ffmpeg、live555、sdl等開源庫。
8、C語言可以做網頁和爬蟲相關的編程。想了解的同學可以去看gsoap、libcur等相關開源庫。
9、C語言可以進行黑客編程。配合匯編獲取隨機地址、調shellcode等。
『貳』 學習C語言可以做什麼
1. 後端開發
主流的後端開發語言就那麼幾種,以Java、C/C++領銜,Python和Go緊跟其後。
2. 游戲開發
掌握了C/C++基本語法之後,開發游戲也依然是一個不錯的選擇,目前工業級別的3D游戲引擎仍然是用C或C++編寫的。
雖然以個人能力無法去完成一個龐大的網路游戲,但是從簡單開始,編寫一些小游戲,然後逐漸深入,循序漸進並最終加入大型游戲開發團隊還是非常好的一個選擇。與之相應的就業崗位主要有游戲開發工程師、游戲引擎架構工程師等。
3. 客戶端開發
畢竟C/C++已經是一個很成熟的語言了,所以除了後端開發其實它還有很多其它的開發崗位可以選擇。自然而然的,就是客戶端開發了。
相信大多數學C/C++的同學都用過C/C++寫桌面軟體吧。那時候估計還是用MFC,照著代碼書上敲一遍就能寫一個比較簡單的界面了。所以如果不想做後端,完全可以靠C/C++找一份客戶端開發的工作。做客戶端同樣也需要扎實的編程基礎和計算機理論基礎,同時可能還要熟悉Windows/C++編譯鏈接機制、QT客戶端開發技術體系、Windows消息機制等技術。
4. 多媒體開發
目前多媒體技術同樣滲入到人們的日常生活中,音視頻已經成為人們獲取信息的一個非常重要的手段。音視頻在傳輸過程中都是經過壓縮並且按照一定規則打包過的。視頻的編碼技術從最開始的H.261到如今的H.265,經歷了30多年的發展,而且實現代碼全部是由C或C++實現。
5. 嵌入式開發
上面幾種崗位選擇都是偏軟體方向想的,而C/C++還有一類非常大的就業方向,就是去做嵌入式。嵌入式本身可能是偏硬體一點,但是現在做個什麼事,都是軟硬不分家的。
嵌入式的開發同樣也會涉及到網路編程、並發編程等方面。通俗點解釋可能就是,嵌入式代碼是運行在別的小系統上,而不是傳統意義的計算機上。這個方向除了需要編程能力,還需要基本的電路理論素養。
6. 人工智慧
人工智慧、機器學習等方向也少不了C或C++語言的身影。
需要強調的是雖然C/C++語言可以從事的方向非常廣泛,但是僅僅掌握C/C++語法是遠遠不夠的,上述的應用領域C/C++語言是基礎,進入這些領域還需要進一步深入系統學習相關領域的知識以及去接觸真實企業項目的內容。
『叄』 c語言學完之後可以干什麼
也許你學了C語言後,只能在DOC界面做printf,才覺得有點感受到編程的感覺。(不過我之前也一樣),C語言作為使用最廣的編程語言,沒有之一,可以做很多方面的開發,比如最多的嵌入式開發,像我們超市用的POS機,街頭上的LED顯示板。一些伺服器,也是用C語言開發的(底層)。各種硬體驅動,也幾乎都有用到。當然,如果有你去了解我們的操作系統,也是用C語言開發的。其實學習和使用某種語言,在懂語法之後,更重要的是對庫的了解和使用,如你現在用的stdio.h string.h stdlib.h ....你可以從事一些嵌入式行業的底層驅動和應用的開發,這種工作是最多用到C的。如果想在手機和PC上開發,現在得學一些高級語言,如果 java,MFC,c#,c++。學JAVA不一定說是要學C之後去學,雖然JAVA是用C開發的。現在主流的語言,很大部份是C系列的,你只要學會了一種,就比較容易上手另一種。你說的系統性編程,太范了,做一般的開發,就主要是有效的組織系統提供的語法與介面,如你現在用的,int a=b+c,printf,然後去實現某種功能。如老師布置的作業,在DOS界面列印一個矩形。當然,開發一個產品要比這復雜的多得多。
『肆』 c語言將來就業方向具體的哦,非本專業不要回答
就業方向有:JAVA初級程序員、計算程序員、JAVA工程師、J2EE系統工程師等。
為了培養和適應計算機應用的發展,特別是軟體產業的發展,本專業具有計算機軟體的基本理論、基本知識和基本技能。
具有運用軟體工程的思想、方法和技術分析、設計和實現計算機軟體系統的能力,畢業後可從事IT行業、科研機構、企事業單位計算機應用軟體系統的開發和開發。
Java方向:Java初級程序員、Java計算程序員、Java工程師、J2EE系統工程師等。網路方向:網路程序員、網站開發工程師、網路工程師等。
簡單管理信息系統開發與維護人員、網頁製作與客戶端腳本編寫人員、初級資料庫管理與維護人員、資料庫開發工程師、系統分析與設計工程師、軟體項目配置經理、文檔工程師。
(4)學校c語言出來之後能幹啥擴展閱讀:
c語言軟體工程要求:
1.通過編碼、單元測試、集成測試、調試和驗證活動生成可用的和有意義的軟體。除了符合設計功能外,軟體構建還需要控制和降低程序復雜度、預測變化、驗證程序以及制定軟體構建標准。軟體構建與軟體配置管理、工具和方法以及軟體質量密切相關。
2.軟體設計包括軟體體系結構設計和詳細的軟體設計。它涉及軟體體系結構、組件、介面以及系統或組件的其他特徵,以及軟體設計質量分析和評估、軟體設計符號、軟體設計策略和方法。
『伍』 c語言我學成之後,我能幹什麼
能做的事情多著了!
寫圖形動畫,寫游戲,寫軟硬體驅動,這些都是C語言實現的哦。
基本上大型項目的核心部分都是C語言實現的。
現在一個項目都是多個人完成的,你負責核心部分開發還害怕什麼了?
『陸』 C語言,數據結構,演算法熟練掌握後,能做什麼
嵌入式軟體項目
大名鼎鼎的linux就是c語言實現的,而且時至今日,linus也是到處反對c++,認為c是最好的語言。linux可能80%都是c語言實現的,剩下的20%可能是一些腳本和匯編語言實現的。c語言比較高效,也適合和設備打交道,所以要開發個什麼驅動啊,寫個什麼底層網路庫啊,c是比較適合的。
所以學了c語言,首先可以做做嵌入式相關的項目。
通訊及服務端項目
在要求安全性和性能的領域,c語言往往是第一的選擇,而實時通信和服務端處理則是這樣的領域。我們能在網路上看到很多招聘中後台選擇一些跟高級語言的,但是也有後台選擇c/c++的,尤其是一些性能要求高的場景的項目。
『柒』 在大學學C語言能幹什麼有什麼用最妤舉些易明白的例子
學了總沒有壞處的,出來工作了,至少你不編程吧,別人說你還是聽得懂,不至於盲
C語言的基本語法我是不打算再提了,很多C語言編程的書,就是將一些基本的數據類型、數據結構、語法,然後就是一些數值
計算的實例,大多數都是雷同的,難免有抄襲之嫌,而且頁沒有多少實用價值。
本書以實用實例作為編程指導,指引大家編寫真正實用的程序。了解到大家對黑客程序、病毒、窗口類程序比較感興趣,因此我就拿這些實例進行講解。基於大家基本都用Windows XP SP3,我也就在這個系統上把程序調試成功後再給大家講解。編程環境,我還是喜歡VisualC++ 6.0
本書計劃從四個大的方面來講,這四個方面是:窗口類、文件操作類、網路類、資料庫類。
都是時下流行的編程必備技術,也是軟體開發者,必須掌握的技術。中間以實例講解,逐步學習,相信大家看完後會有很大的提高的。
第一章窗口類程序的編寫
這一章就先來講解下窗口類程序的編寫。因為現在程序沒有界面,就像人沒有臉面一樣,而且好的界面更能吸引人。從基本的界面開始,相信能給大家指明出一條路的,使大家很容易地掌握窗口序的編寫。其實界面設計利用VC 6.0 的MFC,很容易地製作出來。這里從底層開始寫代碼來寫界面程序,使大家知道一些底層的東西,為以後學習打下好的基礎,相信您學了這些,再用VC 的MFC會得心應手的。
1.1
用 C 寫的第一個一個窗口程序
作為編程的開始,我們還是以一個Hello World來開始我們的學習之旅。代碼如下:
#include <stdio.h>
void main()
{
printf("Hello World!");
}
這是一個再簡單不過的C程序了,只要有點C語言的知識就能夠懂的,不過這里估計還有些人,到現在還不知道#include
<stdio.h>中的頭文件stdio.h到底是什麼東西,我就來說下了,stdio.h是一個文本文件,存在於磁碟上的,已VC為例它的位置如下圖:
也許你聽說過printf()函數是在stdio.h中預定義的,但是你見過其定義的形式沒有,沒有且看下圖
其定義形式,就如圖中所示,也許你並不懂前面那些東西是什麼,不用擔心,以後我會慢慢解釋給大家的。函數是先定義才能使用的,所以stdio.h中定義printf函數,我我們在引用了stdio.h頭文件後就可以在程序中調用printf函數了。
上面是在命令行中顯示一個「Hello World!」,沒什麼意思,下面我寫一個窗口程序,顯示個Hello World!
#include <windows.h>
void main()
{
MessageBox(NULL,"Hello World!","我的第一個窗口程序",MB_OK);
}
編譯運行後如下圖:
彈出的是一個對話框,上面有Hello World,還有一個標題和一個「確定」按鈕。
當然你會說這對話框也算個窗口嗎?這里肯定的告訴你:是的,對話框是窗口程序的一個子集。你可能還會這樣問,這樣一個簡單的窗口有啥用呢,其實這樣的窗口非常有用,我們在操作計算機的時候,會出現一些警告或提示的對話框,都是基本是這種方法寫出來的。就算是這個很簡單,學習本來不就是有易向難,有淺顯深奧去的過程嗎。
整個效果幾乎就是靠一個函數MessageBox的功勞。這里也先不介紹這個函數了,說些其他的。
其實用C編寫一些惡程序,就是把編程環境中所提供的一些函數熟悉了基本就可以了。用VC來寫成序,其中的頭文件有很多,定義了很多Windows API 函數、數據結構、宏,可以讓我們大家運用,通過它們,我們可以快速開發出使用的程序。這些Windows API在微軟的MSDN上查,上面有很多說明,部分還有代碼示例。不會是可以輸入函數名,查找相關信息,建議大家用英文版的Library,因為其內容比中文版的全面,英語不好的同學呢,就先看中文了
中文MSDN:http://msdn.microsoft.com/library/zh-cn/
英文MSDN:http://msen.micorsoft.com/library/en-us/
到這里,我們就完成第一個有界面程序的編寫,你感覺寫有界面的程序難嗎?顯然不難。
下面看一個向鋒和波波感興趣的程序:九九乘法
採用命令行形式
#include 「stdio.h」
int i=0,j=0;
for(i=1;i<10;i++)
for(j=1;j<i+1;j++)
printf(「%d*%d=%d\t」,j,i,j*i);
printf(「\n」);
和那個javascript效果都是一樣的,所以語言只要學好一樣,其他的就很容易旁通的,學習就撿一種學好,不要貪多。
好的,這一節就這樣吧,大家先各自了解下微軟的MSDN,對以後的學習會有很大的幫助的。
1.2 第一個真正的窗口程序
上一節中,我們用MessageBox函數輕松地實現了一個對話框窗口,可能你會說,那僅僅是個沒有用的對話框而已,是的,只是對話框而已。我之所以以一個對話框為例呢,是因為我只是想讓你知道寫一個有界面的程序並不是件難辦的事。明白了這一點後,我們繼續。今天來編寫一個真正的窗口程序。
下面就該羅嗦一段了,由於大家以前並沒有寫過什麼窗口程序,寫的都是命令行下的,我們知道在命令行下的程序都有一個主函數main,這個函數也就是程序的入口函數。我們現在用VC 6.0來寫,而且要寫窗口類程序,VC 6.0給我們提供了一個專門用作窗口類程序的入口函數WinMain()
這個函數原型是這樣的
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTRlpCmdLine,
int nCmdShow
);
大家是不是感覺這個函數挺復雜的,有這么幾個參數,而像main好像就沒有參數。其實main是有參數,這個向鋒和小四是知道了的。但是main函數的參數是可以省略的,而WinMain是不可以省的。這里也要對VC6.0的編譯模式改下
看下圖
依次是「工程」→「設置」→「連接」,在「工程選項」里把console改為windows就可以了。如果認真學了匯編,或是手寫命令編譯連接過C程序,就會知道這是干什麼的。Console是控制台的意思,以前我們用mian函數寫的程序都是以控制台模式連接的,所以很少會有界面的。現在我們要寫有界面的程序,所以要選Windows(窗口)模式了。
我們寫入以下代碼,並按照上面說的方法去做,看看結果
#include "windows.h"
int WINAPI WinMain(HINSTANCEhInstance,
HINSTANCE hPreInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
MessageBox(NULL,"WinMain創建的窗口程序","WinMain",MB_OK);
return0;
}
結果如下圖:
與第一節中的這段代碼代碼比較下
#include 「windows.h」
void main()
{
MessageBox(NULL,"Hello World!","我的第一個窗口程序",MB_OK);
}
兩者比較下,後者多了個cmd窗口。可見用main寫的並沒有完全脫離命令行呀。所以以後我們寫窗口程序就用winmain了。
好了,轉過來,我們來看看WinMain()函數,其中有4個參數
先看下解釋(看不明白得先看完):
hInstance:應用程序當前事例的句柄。
hPrelnstance:應用程序的先事例的句柄。對於同一個程序打開兩次,出現兩個窗口第一次打開的窗口就是先前實例的窗口。對於一個32的位程序,該參數總為NULL。
lpCmdLine:指向應用程序命令行的空字元串的指針,不包括函數名。獲得整個命令行,參看GetCommandLine。
nCmdShow:指明窗口如何顯示(是隱藏還是顯示,有沒有最大化按鈕之類的)。取值可以參考MSDN
這里我相信有一個詞大家好應該比較陌生,句柄(HANDLE)是吧。下面我就來簡單的說下
句柄其實就是Windows系統中一個東西的唯一標識。就是系統中有很多運行的程序或者資源之類的,為了更好的管理使用,Windows系統給它們每人一個ID一樣。懂得網頁製作的人應該知道網頁中各個元素的ID吧,網頁的ID如果重復話可能出現錯誤。那麼系統的句柄會不會有相同的,那是肯定不會有的了,就和我們的學號一樣,系統自動分配每一個模塊的句柄,是不會相同的了。
對於句柄大家可以先這樣理解著,不用一下子搞懂得。以後學著學著就明白了。
估計大家對那幾個參數的類型改犯迷糊了吧。其實那幾個類型,並不是什麼新類型,都是Windows開發人員為了自己和他人編程方便,同過基本的C語言語法定義一種新的結構體,或者是共同體,再者就是枚舉類型。我知道結構體、共同體和枚舉類型,很多老師是沒有講到的,因為在書的後邊,很多教C的,又是很垃圾的老師,所以不會講那麼快的。其實結構體這些數據類型,就是通過我們常用的字元、整型、浮點等數據類型構造一個比較復雜的類型而已,舉個例子,就是我們知道C沒有一個數據類型可以描述一個人吧,那麼我構造一個是不是很方便我們編程呢。我們可以這樣構造一個
struct People
{
intage;//年齡
charsex[2];//性別
intheight;//身高
……
}
我們這樣定義以後就可以在我們以後的程序中利用這個數據類型了,People zhangsan;把zhangsan的身高172放到zhangsan.height中。這樣可以方便完成很多工作。所以結構體是很簡單的,還有其他的復雜數據類型也是很簡單的,都是有常用的簡單的類型來結合到一起構造一個復雜的而已。這和JAVA定義類是很相似的,java定義個人類,不是可以這樣的
public class People
{
publicint age;
publicstring sex;
publicheight;
……
}
看起來都差不多,而且用法也很相像。唯一的差別其實就是類可以有方法,而結構體是沒有的(經過特殊處理也是可以的,這里不用考慮)。
上面是為了讓大家了解下復雜數據類型的定義,羅嗦了一大堆。下面來看下WinMain中第一個參數的類型HINSTANCE這個只是個結構體而已,實際上和HANDLE這個類型差不多,但是有一點差別,而HANDLE是這樣typedef PVOID HANDLE;定義的,PVOID是什麼呢,我們來看下typedef void *PVOID;說明PVOID是一個指針,初始指向空(void)。因此可以知道句柄也是個指針而已。看著這么復雜原來也只是指針。
這些都可以在微軟的msdn上查得到的,而且很詳細的
那個第二個LPSTR 根據字面上的意思就知道是字元串類型了。查一查果然是。
大家一定要利用好msdn,很有用的。
本節就到此結束了,主要是說明了一個WinMain函數和結構體的事情,東西也不算太多,大家應該能接受得了吧。下節就來點復雜點深點的東西,希望大家做好心理准備。
1.3 窗口程序的編寫
在來啰嗦之前,希望大家能夠做好准備,這一節知識有點多,內容有點長。但願大家能夠一口氣讀完,如果一口氣讀不完,那就換口氣接著讀。
上節中我們用MessageBox()就實現了一個真正的窗口。MessageBox()中的原型如下:
Int MessageBox(HWND hWnd,
LPCTSTRlpText,
LPCTSTRlpCaption,
UINT uType);
參數解釋
hWnd 所屬對話框所屬窗口的句柄,如果是NULL,則此對話框不屬於任何一個窗口。
lpText 對話框窗口的顯示內容。
lpCaption 對話框窗口的標題。
uType 對話框的樣式和動作(像是確定按鈕,還是取消按鈕就是設置這里的)
關於這個函數的細節可以看這里
http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx
到此為止,你也算是會了窗口程序的編寫,但只是一個開始,不過這已經很好,可能會讓你感覺到了C的魅力,也可能會稍微解點C語言能幹什麼的疑惑。在開始寫代碼之前,我有必要把細節和原理先說明下。
Windows下一個窗口創建的過程有以下幾個步驟:
1. 程序創建一個窗口,首先要向Windows系統注冊一個窗口類wndclassex,其實就是定義一個變數,變數的類型是WNDCLASSEX(結構體)。該結構體的定義與介紹看這里(http://msdn.microsoft.com/en-us/library/ms633577(VS.85).aspx),
typedef struct {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;
成員介紹
cbSize 值為sizeof(WNDCLASSEX),在調用GetClassInfoEx前必須要先設置它值。
style 窗口類的樣式,它的值可以是窗口樣式值的任意組合。
可以有以下的值
lpfnWndProc 指向窗口處理函數(回調函數)。處理窗口事件,像單擊滑鼠會怎樣,右擊滑鼠會怎樣,都是由此函數控制的。
cbClsExtra 為窗口類的額外信息做記錄,系統初始化為0。
cbWndExtra 記錄窗口實例的額外信息,系統初始為0.如果程序使用WNDCLASSEX注冊一個從資源文件里創建的對話框,則此參數必須設置為DLGWINDOWEXTRA
hIcon 窗口類的圖標,為資源句柄,如果設置為NULL,系統將為窗口提供一個默認的圖標。
hCursor 窗口類的滑鼠樣式,為滑鼠樣式資源的句柄,如果設置為NULL,系統提供一個默認的滑鼠樣式。
hbrBackground 窗口類的背景刷,為背景刷句柄,也可以為系統顏色值,如果顏色值已給出,則必須轉化為以下的HBRUSH的值
· COLOR_ACTIVEBORDER
· COLOR_ACTIVECAPTION
· COLOR_APPWORKSPACE
· COLOR_BACKGROUND
· COLOR_BTNFACE
· COLOR_BTNSHADOW
· COLOR_BTNTEXT
· COLOR_CAPTIONTEXT
· COLOR_GRAYTEXT
· COLOR_HIGHLIGHT
· COLOR_HIGHLIGHTTEXT
· COLOR_INACTIVEBORDER
· COLOR_INACTIVECAPTION
· COLOR_MENU
· COLOR_MENUTEXT
· COLOR_SCROLLBAR
· COLOR_WINDOW
· COLOR_WINDOWFRAME
· COLOR_WINDOWTEXT
lpszMenuName 指向一個以NULL結尾的字元床,同目錄資源的名字一樣。如果使用整型id表示菜單,可以用MAKEINTRESOURCE定義一個宏。如果它的值為NULL,那麼該類創建的窗口將都沒有默認的菜單。
lpszClassName 窗口類的名字,字元串類型。
hIconSm 小圖標的句柄,在任務欄顯示的圖標,可以和上面的那個一樣。
定義一個WNDCLASSEX類型變數後,在給變數成員初始化後,我們就可以用
RegisterWindowEx(&wndclassex)來注冊這個窗口類了。
這個注冊過程,就和我們平常創建一個項目一樣,都要先注冊才能創建。
『捌』 學c++,c語言將來能找那些工作啊
所以,假如你學的是C++,同時也不在乎業內莫名其名的崗位歧視鏈的話,找一個客戶端開發的工作也是非常不錯的。只不過相較於後端開發,你可能需要重新審視客戶端這個角色。
『玖』 學會C語言編程能幹什麼可以做些什麼程序
C語言是一門基礎的語言,初學者可以通過它來理解高級語言編程思想,對於之後進階學習C++等語言都有幫助的。
C本身能做的事也有很多,添加微軟的庫文件可以實現各種功能,計算器等等都可以,我自己有的時候用C語言編程來做題目,處理復雜重復性運算。
另外,其實很多語言的基礎都是C語言,單片機stm32等等其實如果用庫函數編程那麼其實就是在用C語言寫,這還是其中一個,C語言的應用真的挺廣的。
進階C++學習後能做的事就更多了,MFC等等,就能夠編程windows的視窗程序了。不過C語言是面向過程,C++是面向對象,中間還是需要有一點轉換。
『拾』 學會了C語言都可以做什麼呢
C語言是一門通用性的語言,並沒有針對某個領域進行優化,在實際項目中,C語言主要用於較底層的開發,例如:
Windows、Linux、Unix 等操作系統的內核90%以上都使用C語言開發;
開發硬體驅動,讓硬體和操作系統連接起來,這樣用戶才能使用硬體、程序員才能控制硬體;
單片機和嵌入式屬於軟硬體的結合,有很多使用C語言的地方;
開發系統組件或服務,用於支撐上層應用;
編寫PHP擴展,增強PHP的功能;
如果對軟體某個模塊(例如演算法和搜索部分)的效率要求較高,也可以使用C語言來開發。