C語言基礎:第一個最簡單程序——Hello World!

2021-02-19 編程外星人

        基本功無論在什麼領域內都有著不容忽視的地位,想要學好編程,並將程序運動到實際當中去一定要學好基礎,學好C語言基礎,打下紮實的編程基本功,我們將帶你走進編程的世界。

        我是先完成的《C語言深處》再寫的《C語言基礎》。很多朋友看過了《C語言深處》後向我反映:直接看這個系列覺得很難,不好理解。並希望我能編寫一個關於C語言編程基礎的系列文章。所以我後來才再寫的《C語言基礎》,這個系列借鑑了很多優秀的C語言教材,比如Stephen Prata的《C Primer Plus》和Brian W. Kernighan & Dennis M. Ritchie 的《The C Programming Language》、譚浩強的《C語言程序設計》等等。這些優秀的書籍讓我對C語言的學習有很大幫助。我也希望通過我自己的理解和消化,把這些知識分享給有這方面興趣的朋友們。

        我個人有一個習慣,喜歡把複雜的問題簡單化,而不喜歡將一些簡單的問題描述的極其複雜難懂。《C語言基礎》這個系列是面向一些C語言的初學者,所以裡面的內容比較淺顯易懂,很多問題和知識點並沒有深入去挖掘,也就是說這個系列是一個入門級教材,幫大家快速的找到一個學習C語言的方向。

        我們首先來看一個最簡單的C程序——Hello World! 打開一個文本編輯器輸入以下內容,並保存為a.c

#include <stdio.h>

main()

{

printf("Hello World!\n");

}

        然後打開你的命令行,執行下面命令(在Linux作業系統中,如果大家對Linux不熟悉請參見《一點一滴學Linux》)對這個原始碼文件進行編譯:

gcc a.c

        執行上面命令後,你會看到一個a.c文件被編譯成了一個a.out的輸出文件,這是一個可執行文件,執行a.out這個程序就可以看到它的運行結果:

./a.out

Hello World!

        怎麼樣?這就是我們編寫的第一個C語言程序,這也是最簡單的一個程序,它只有一個功能,就是顯示一些文字,文字的內容就是「Hello World!」,下面我們分別來看一下這段代碼中各項內容的作用。首先來看一下

#include <stdio.h>

        其中include是一個C語言的關鍵字它表示這段代碼包含另一個文件,這個文件名用<>說明,叫作stdio.h這個文件是一個C語言的頭文件,它定義了C語言中的標準輸入輸出函數,我們的代碼使用include包含了stdio.h這個頭文件之後,就可以使用標準函數了,例如代碼中的printf函數。在include關鍵字前還有一個#號,它表示的是一個宏(關於宏我們會在後續章節中講述),配合include為固定寫法,繼續往下看代碼:

main()

{

}

        這裡的main()表示的是一個函數,它是由一個名稱main、一對小括號()和一對大括號{}所組成的,main是這個函數的函數名稱,簡稱函數名。小括號()裡面的內容是這個函數的參數,而大括號裡的內容就是這個函數的執行內容,也就是我們常說的函數體。而函數名為main是C語言規定的一個主函數,編譯器在對C語言代碼做編譯時,會找到代碼中被定義成main的函數,將其編譯為函數的執行入口,也就是程序運行開始的地方。main函數的名字、參數和返回值都是固定的,關於函數的內容我們會在後續章節中學習。在這裡我們只需要知道main函數是一個固定名稱的函數,它是程序執行的入口即可。事實上main函數是一個程序的唯一入口,整個程序中只能定義一個、且必須定義一個main函數。main函數的完整形式為:

int main(int argc, char *argv[])

{

        return 0;

}

        關於main函數的參數與返回值我們可以暫時忽略,不使用參數和返回值的main函數通常也可以被編譯器所識別,這樣簡化的函數更適合初學者理解。

        接下來看一下main函數體中的執行代碼:

printf("Hello World!\n");

        這裡的代碼表示的是程序調用(執行)一個函數這個函數的名稱為printf。我們只需要調用這個函數,它就會在標準輸出上顯示出字符串,而小括號中的"Hello World!\n"表示的是printf這個函數執行時需要的參數,也就是Hello World!這段文字,而\n表示的是回車符號。最後一個分號;是必需要寫的,它表示這一個語句結束,也就是執行printf這個結束。printf(params);這樣的形式表示的是調用一個函數,讓這個函數執行,並向其傳入一個想要顯示的內容,當程序執行這段代碼時,printf就會根據需在標準輸出中要顯示出結果。需要注意的是:在C語言裡所有的字符串都需要用雙引號括起來,例如"Hello"、"World"、"Hello World!"等等。另外所有的關鍵字均是英文字母,標點符號都是英文的。

        這裡我們需要說的是,想要學好編程,就一定要動手編寫代碼並執行程序,只學理論不手動編寫代碼,是學不好編程的。所以希望讀者能夠邊學習,邊動手,學好C語言基礎。

關注編程外星人

加好友拉進技術交流群,驗證內容:

我想加入編程技術交流群





相關焦點

  • 6個變態的Hello world C語言程序
    來源 :酷殼下面的所有程序都可以在GCC下編譯通過,只有最後一個需要動用C++的編譯器g++才能編程通過。
  • 初學者:如何學好C語言?
    請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收穫,同時也意味著你需要經歷艱苦的過程。所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。
  • C語言入門經典:必背18個經典程序
    C語言必背18個經典程序1、/*輸出9*9口訣。共9行9列,i控制行,j控制列。
  • python基礎學習教程:Python基礎語法
    Python 語言與 Perl,C 和 Java 等語言有許多相似之處。但是,也存在一些差異。在本章中我們將來學習 Python 的基礎語法,讓你快速學會 Python 編程。第一個 Python 程序交互式編程交互式編程不需要創建腳本文件,是通過 Python 解釋器的交互模式進來編寫代碼。
  • 你好 世界.HELLO WORLD.2019.日語中字
  • SQL語言基礎:資料庫語言概念介紹
    1、概念介紹SQL(Structured Query Lanauage)結構化查詢語言是關係資料庫中最普遍使用的語言數據定義語言的處理程序分為資料庫模式定義處理程序、資料庫存儲結構和存儲方法定義處理程序。資料庫模式定義處理程序:接收用DDL表示的數據模式定義,把其轉變為內部表示形式,存取到數據字典中。資料庫存儲結構和存儲方法定義處理程序:接收資料庫系統存儲結構和存儲方法定義,在存儲設備上創建相關的資料庫文件,建立物理資料庫。
  • C語言進階技術:同事這些操作把我驚呆了!
    我們在位置1進行兩個變量的定義,成功編譯運行得到如上的結果,符合我們的預期,然而當我們去掉位置1進行位置2的定義,程序卻無法進行編譯,看來跟我們預期在編譯過程中直接展開.c文件是一致的。大家在正常的開發過程中bug菌還是不建議使用#include"xxx.c",因為在我們程序的設計過程中,.h文件就是一種外部的引用接口,而.c是對應的內部實現,如果濫用#include"xxx.c"有可能造成函數等等的重複定義,同時也對調試相關程序帶來一些困擾,當然如果遊刃有餘就沒啥問題的啦。
  • C語言-搶紅包軟體原理
    //C語言-搶紅包軟體原理//講課老師:範志軍  QQ:208824435#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ float a[11];//保存10個紅包金額
  • Python3快速入門知識點:基礎語法
    Python 由 Guido van Rossum 於 1989 年底在荷蘭國家數學和計算機科學研究所發明,第一個公開發行版發行於 1991 年。易於學習:Python 有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。易於閱讀:Python 代碼定義的更清晰。
  • C語言:優雅的字符串函數庫
    以學習一門語言為例:大多數人都持有一種觀念,要真正學好一門語言必須得去所學語言當地學習或生活一段時間。而事實上,大多數人都沒有這樣的學習條件。簡介Simple Dynamic Strings (簡稱 SDS) 是一個 C 語言字符串庫,它增強了 C 語言字符串處理的能力。設計 SDS 原本是為了滿足設計者自身日常的 C 編程,後來又被轉移到 Redis 中,在 Redis 中被廣泛使用並對其進行了修改以適合於高性能操作。
  • C語言入門:人機猜拳小遊戲的實現
    我們需要做的是:①程序能接受你的輸入(1或2或3)②計算機能隨機選擇1~3的一個數③程序對你輸入的數和計算機選的數根據規則作比較,判斷輸贏好,明確了需求,我們一步一步來完成這個程序。①程序能夠接受你的輸入 這個可以通過C語言的輸入語句scanf實現(visualstudio中出於安全考慮要用scanf_s):scanf_s("%d",x);②計算機從1~3中隨機選擇一個整數 如果你閱讀過C語言入門:C語言實現猜數字小遊戲,那你一定知道C語言的輸出隨機數函數srand和rand:srand(time(NULL));
  • 神奇的C語言:一段令人百思不得其解的代碼
    { int a[5]={0,1,2,3,4}; int b=3; printf("%d,%d",a[b],b[a]}; printf("%d,%d\n",&a[b],&b[a]); return 0; } 這個程序看上去蠻簡單的
  • 戰勝恐懼心理:集中學習R語言的第一個小結(我的起點是:連標準誤是什麼都不知道)
    Zhan's estimable paper in 2017;# (4) 劉思喆: 《R 常見問題解答/R frequently asked questions》;# (5) 首都師範大學政法學院吳江老師在學術志開設的「R語言基礎操作及圖表製作」課程;# (6) other useful pdf documents from R official website
  • 2017年9月程式語言排行榜:Java、C、C ++ 三分天下何時休
    即便是被認為最具潛力的 C# 和 Python 也未能撼動這三者的位置。近期 Stackoverflow 針對美國、英國、德國、加拿大等發達國家程式語言市場的統計,過去五年,在高收入國家,Python 是增長最快的主流程式語言
  • 《hello hello 明信片》展覽 輸入不如書寫
    雲集深港兩地設計青年才俊 「hello hello 明信片」展覽於上環畫廊開展現今科技為人類提供各種以文字為基礎的溝通模式,如電郵、whatsapp、微信等等,然而文字的情感顯然被預設,個人的性格被隱藏。
  • 英語兒歌:Hello Hello How are you?
    hello hello hello 你好嗎?Hello Hello Hello How are you?hello hello hello 你好嗎?Hello Hello Hello How are you?hello hello hello 你好嗎?
  • R語言:天氣數據抓取RNCEP簡介
    Christian Weichsel,他曾經在項目中給我推薦過一個R語言的包:RNCEP,可以很方便的根據經緯度和時間爬取歷史天氣數據。這裡就簡單介紹一下,就當薪火相傳了。天氣數據的抓取,在實際工作中還是比較常見的,常用於相關性分析,和給數據挖掘增加外部特徵。當然可以去noaa網站上手動下載,不過有了RNCEP也著實方便了R用戶。
  • 跟hello wong學瘋狂粵語
    ↑↑↑什麼「一言驚醒李克勤」...什麼「預防禽流感,勿摸李香琴」、「本是黃德斌,商天娥太急」...無論橫讀豎讀都覺得怪怪的,被語文老師知道了,估計會叫出去罰站吧,但如果你精通粵語這門博大精深的語言下面這組圖來自facebook網友hello wong,雖然他的畫風有點慘不忍睹,但他的中文能力簡直超凡脫俗。日常用語和經典臺詞搭配上各種香港娛樂圈老梗和明星八卦讓人在吐槽「這個人好無聊」的同時,忍不住笑出聲,看來這就是粵語的獨特魅力。
  • Java基礎:圖形化記事本程序
    題目:編寫一個筆記本程序要求:1.要有圖形化界面          2.能實現編輯
  • 甲骨文:有史以來最偉大的25個Java應用程式
    2004 年,Java 成為首個擴展人類星球影響力的程式語言。一些人將 Minecraft 的早期成功歸功於這樣一個事實:玩家可以通過 Java 小程序在 Web 瀏覽器中玩遊戲,而不必下載並安裝遊戲。儘管 Java 小程序自 Java 9 以來就不被推薦,並且在 2018 年也被從 Java SE 11 中剔除掉了,但它們一度是最快的遊戲。一個有趣的事實是:Java 小程序還可以訪問 3D 硬體加速,這使得它們在科學可視化方面很受歡迎。