C/C+編程筆記:Windows編程入門知識

2020-12-13 騰訊網

引言:

學習C語言很久了,是不是一直在跟黑乎乎的屏幕打交道,像QQ、360、VC6.0這樣的軟體都是帶界面的,怎麼做到的呢?

前面我們講的」黑屏「叫控制臺應用程式(Win32 Console Application),也稱DOS程序(或MS-DOS程序)。DOS是早期的命令式作業系統,很難做出漂亮的界面,除了開發人員,」黑屏「對普通用戶很不友好。

帶界面的程序叫Windows應用程式(Win32 Application)。Windows是一款現代作業系統,帶有豐富的交互界面,使用簡單,無需記憶繁雜的命令。

使用C語言可以開發出Windows應用程式,也就是帶界面的程序,只是絕大部分C語言教程沒有講,它們只講了基本語法,讓很多初學者認為學C語言沒用,什麼都做不出來。

其實不是這樣的,C語言只是一種工具,需要與Windows系統結合,藉助Windows提供的函數才能開發出漂亮的程序。

Windows API 編程、Windows編程、Windows SDK 編程是一個概念。

什麼是windos編程?

在C語言中,使用fopen()函數可以打開一個文件,感覺非常簡單。文件保存在硬碟上,要經過複雜的處理才能顯示,這些細節對我們來說是透明的,由作業系統完成。也就是說,我們調用fopen()函數來通知作業系統,讓作業系統打開一個文件。

那麼,我們如何告訴作業系統打開文件呢?

看似簡單的操作到底層都非常複雜,打開文件首先要掃描硬碟,找到文件的位置,然後從文件中讀取一部分數據,將數據放進I/O緩衝區,放進內存;這些數據都是0、1序列,還要對照ASCII表或Unicode表」翻譯「成字符,再在顯示器上顯示出來。這個過程如果要讓程式設計師來完成,那簡直是噩夢!

怎麼辦呢?Windows想了一個很好的辦法,它預先把這些複雜的操作寫在一個函數裡面,編譯成動態連結庫(DLL),隨Windows一起發布,程式設計師只需要簡單地調用這些函數就可以完成複雜的工作,讓編程變得簡單有趣。

這些封裝好的函數,叫做 API(Application Programming Interface),即應用程式編程接口。

API 函數以C語言的形式向外暴露,可以通過C語言直接調用。

除了函數,Windows 還預先定義了很多數據類型(使用C語言的 typedef 關鍵字定義)。廣義上來說,這些數據類型也是 API 的一部分。

API 屏蔽了很多細節,大大簡化了程式設計師的工作,這就是作業系統的威力,不但讓普通用戶使用方便,也讓程式設計師如釋重負。

在Windows上運行的程序(包括MS-DOS程序),本質上都是通過調用Windows API來完成功能的,包括QQ、360、VC6.0等,別看這些團隊牛,也不可能從底層做起,那簡直不可想像。

C語言也一樣,也是調用Windows API,fopen() 函數就是通過調用 CreateFile() 函數實現的。CreateFile() 是Windows API中的一個函數,可以用來打開或創建文件。

通常所說的 SDK 編程就是直接調用API 函數進行編程。SDK 是 Software Development Kit 的縮寫,即軟體開發工具包。

Windows API 函數成千上萬,詳細了解每一個函數的用法是不可能的,也是完全沒有必要的。只需知道哪些功能由哪些API 函數提供就行了,等使用它們時再去查閱幫助文件。

帶界面的程序的專業稱呼是GUI程序。GUI 是 Graphical User Interface 的簡寫,即圖形用戶界面。教你使用 Windows API 來編寫GUI程序,程式語言為C語言。

你或許學C語言很久了,沒什麼感覺,可能學python都可以抓取網站的數據了,C語言還是默默無聲。

不要放棄,今天我們介紹了windows編程,windows編程就是運用C語言,我們的底層系統C語言的傑出作品。

相關焦點

  • 學習編程道路上的入門書籍之C篇
    學習編程專欄連載編程學習編程道路上的入門書籍之C篇,此篇內容將包含一些算法以及數據結構相關內容,文章中的所有推薦的書籍均來自知乎社區大牛力薦書籍、豆瓣評分較高書籍、各語言社區比較熱門書籍以及京東、亞馬遜、噹噹熱銷書籍的重合書籍。
  • C/C+編程筆記:C語言預處理命令是什麼?不要以為你直接寫#就行!
    關於編譯和連結的過程、目標文件和可執行文件的結構、.h 文件和 .c 文件的區別,我們將在後期專題中講解。 在實際開發中,有時候在編譯之前還需要對源文件進行簡單的處理。
  • C/C++編程筆記:C/C++中的strrchr()函數,到底該怎麼用?
    句法char * strrchr(const char * str,int c)在這裡,str是字符串,c是要定位的字符。它作為int促銷傳遞,但在內部轉換回char。 運用給定C ++中的字符串,我們需要查找字符的最後一次出現,假設為「 a」。
  • C/C+編程筆記:C語言入門題之正倒金字塔,正反三角形代碼詳解
    其實學編程關鍵是學習其思想,如果你精通了一門,再去學其他的時候也很容易上手。C不會過時的,尤其是在unix、linux操作平臺上,學好C是必須的。 C跟C++在很多方面也是兼容的,c是c++的基礎。
  • 如何入門中學生編程
    相信很多同學對編程很感興趣,但是卻不知道如何入門以及入門難度如何,廢話少說,直接進入主題。首先,學習編程不難,難的是自己的想法(如果有同學學習過就知道了)。其次,如何入門。對安卓開發有興趣的同學,入門學習 java ,這是因為安卓開發用到的程式語言就是 java。(聽說谷歌出了 kotlin...)
  • c語言編程軟體哪個好?c語言編程軟體下載地址
    c語言編程軟體哪個好?c語言編程軟體下載地址 2019年1月14日 HuangJiang來源:網際網路 繁體
  • C程序編程四步走
    本文使用的測試代碼是經典入門程序 "Hello World!"。測試環境為探究預處理,編譯,彙編和連結的功能,我們在 Ubuntu 系統中使用 Gcc 編譯器( version=4.8.4 ),用簡單的也是最經典的入門程序 "Hello World!" 作為測試代碼。
  • 門外漢入門級C語言學習筆記——從東拉西扯中硬核回歸
    筆記主要摘自於:華章科技 《手把手教你學C語言》於是我做了些筆記給與我當初同樣迷茫的電腦編程小白——我們一起從0學習程式語言——C語言。不誇張的說——C是任何語言的基礎。C是一門程式語言,跟計算機對話。為什麼偏偏是C?可是為什麼很多人在說這句話呢?我就是不懂啊!
  • 【編程基礎】c printf知多少
    printf()函數是格式輸出函數,請求printf()列印變量的指令取決與變量的類型.例如,在列印整數是使用%d符號,在列印字符是用%c 符號
  • C/C++編程筆記:「 int main()」和「 int main(void)」的區別?
    以上程序編譯和運行正常,但下面的程序在編譯失敗另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!C語言C++編程學習交流圈子,QQ群【1030652847】分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!
  • 自學編程第1節:程式語言有哪些,什麼關係?彙編C/C++,JAVA簡介
    首先,謝謝大家點擊閱讀獵奇哥的編程系列教程,後期慢慢補充,詳細介紹C語言,C++語言編程的方方面面,儘量幫助大家能夠儘量簡單的學會C++編程核心入門知識。總章節數待定,視內容的更新情況。說起編程,最早的是彙編語言,這種語言大家通常叫做低級語言,做一個程序,需要非常多的指令和代碼,完成的卻是一個非常簡單的功能,程式設計師的工作量非常大,當然,那個時期,電腦的功能也沒有現在的這麼強大,彙編對於當時來說,也是夠用。
  • C語言簡單編程速成
    除了編程的基礎知識之外,並沒有很高級的概念,這很大程度上是因為 C 語言實際上就是現代程式語言的基礎之一。例如,C 語言的特性之一是數組,但是它不提供字典(除非你自己寫一個)。當你學習 C 語言時,你會學習編程的基礎組成部分,它可以幫助你認識到如今的程式語言的改進及其的精心設計。
  • C/C++編程筆記:如何理解C語言中的回調函數,零基礎也看得懂
    在c語言中,回調是使用函數指針來實現的。函數指針——顧名思義,是指向一個函數的指針。通常函數指針有兩個方面的用途,一個是轉換表(jump table),另一個是作為參數傳遞給一個函數。通過一個例子簡單介紹回調函數的使用大家應該都對c語言的庫函數qsort有所了解,qsort聲明如下:void qsort(void*base,size_tnitems,size_tsize,int(*compar)(constvoid*,constvoid*))可以看到,它的第三個參數是一個函數指針,傳入兩個沒有定義指針指向的類型的參數
  • python+C、C++混合編程的應用
    有的語言專注於簡單高效,比如python,內建的list,dict結構比c/c++易用太多,但同樣為了安全、易用,語言也犧牲了部分性能。在有些領域,比如通信,性能很關鍵,但並不意味這個領域的coder只能苦苦掙扎於c/c++的陷阱中,比如可以使用多種語言混合編程。
  • C語言小程序--猜數遊戲
    int main(){ // 種子 //產生一個隨機數 //rand char c;想的話輸入y,否則輸入別的字符\n"); while((c = getchar()) == 'y') { srand(time(NULL)); //rand() 返回一個整型的值  %
  • 為什麼要把學習C語言作為第一門程式語言?
    編程是向計算機發出指令以執行特定任務或執行指令的行為,目前專業行業和學術界使用數百種程式語言。一個人需要熟悉並且能夠使用至少幾種程式語言進行編程才能作為目前專業開發者的成功。學習編程的最好理由在於它對所有人開放,你不需要大學學位即可通過自學成為專業程式設計師。
  • 日常疑惑:編程學Java還是學C語言?
    這兩門程式語言都是IT行業的寵兒,Java與和C語言各自的技術特點、應用方向上有所不同,沒有伯仲之分,所以這也讓初學者們覺得很難選:應該選擇哪個做為入門語言呢?從學習的難易度上來說,java語言比C語言要簡單。
  • 用Python使用C語言程序(Windows平臺)
    qianyan在機器學習中,很多時候我們需要Python和C的混合編程,最重要的原因是為了性能效率的提升: 解釋型語言一般比編譯型語言慢,一般提高性能的有效做法是,先做性能測試,找出性能瓶頸部分,然後把瓶頸部分在擴展中實現。本文的目標是在windows平臺下(使用pycharm),實現python調用C語言編寫的程序。
  • 程式設計師學習C語言編程的4種方法,C語言之父的大作不容錯過!
    如果新手要學習編程,一些前輩都會建議從Python、PHP、Java開始學。不過,有些程式設計師是直接從C語言強勢入門編程的。那麼,如何學習C語言呢?下面w3cschool提供4種入門C語言的方法:0、刷題絕大多數的程式設計師學編程的時候,還是會開啟簡單粗暴的刷題模式。刷面試對於面試以及技術的提高大有裨益,刷題網站強推Leetcode、Codility、Lintcode等。
  • 為什麼要學習「 C」程式語言?
    「 C」編程是另一種程式語言的基本基礎,像java、php,C++等熱門程式語言都是「 C」編程最為底層開發,所以我們通常稱「 C」編程編程「母語」。「 C」編程是一種簡單的語言,可以更快地執行。「 C」包括32個關鍵字,各種數據類型以及一組非常有效地執行編程的重要內置函數。額外的「 C」編程功能是它可以擴展自身。「 C」編程還是一種極其緊湊的語言,這意味著以「 C」編程方式尋址的程序可以在不同的機器上運行。C程式語言的優勢作為中級語言,C連接了低級和高級語言的功能。C語言可用於底層編程。