C++探索之旅 | 第一部分第三課:你的第一個(gè)C++程序

作者 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處。
原文:http://m.itdecent.cn/p/d44bd24ce6af


《C++探索之旅》全系列

內(nèi)容簡(jiǎn)介


  1. 前言
  2. 命令行的奇幻世界
  3. 創(chuàng)建第一個(gè)項(xiàng)目
  4. 解釋第一個(gè)項(xiàng)目
  5. 注釋及代碼整潔之道
  6. 總結(jié)
  7. 第一部分第四課預(yù)告

1. 前言


上一課是 C++探索之旅 | 第一部分第二課:C++編程的必要軟件 。

經(jīng)過上兩課之后,我們已經(jīng)知道了什么是編程,編程的語言,編程的必要軟件,C++ 是什么。

我們也安裝了適合自己的 IDE(Integrated Development Environment,就是“集成開發(fā)環(huán)境”的意思)。

除了使用 IDE 之外(IDE 集成了文本編輯器,編譯器,調(diào)試器,運(yùn)行程序,等),也可以選擇另一種難一些的方式:自己用某一種文本編輯器來編寫 C++ 代碼,用 g++(GNU 項(xiàng)目的 C++ 的編譯器)來編譯程序,然后用命令行來運(yùn)行程序。

推薦幾個(gè)不錯(cuò)的文本編輯器:Vim,Emacs,Sublime Text,Atom,VS Code(現(xiàn)在 VS Code 非?;穑ㄟ^安裝各種插件可以成為 IDE),等。

以上幾個(gè)文本編輯器,我都用過。Sublime 只用了一會(huì),Vim 和 Emacs 用得比較多,Atom 也不錯(cuò),微軟出的 VS Code 也挺好的。

我以前寫了一篇專門介紹 Emacs 的文章, Emacs,最強(qiáng)編輯器,沒有之一 。當(dāng)然,這個(gè)標(biāo)題有點(diǎn)夸張了,哈哈。其實(shí)我現(xiàn)在工作中還是用 Vim 比較多。

這一課我們就來介紹命令行程序,用 IDE 或 文本編輯器編寫第一個(gè) C++ 程序,以及講解 C++ 程序的基本原理吧。

2. 命令行的奇幻世界


這個(gè)標(biāo)題是不是有點(diǎn)玄乎:命令行還有奇幻可言?什么是命令行?

我們會(huì)一一解釋。

也許說起編寫第一個(gè)程序,大家會(huì)很激動(dòng),期待干一番大事業(yè)。

但是,遺憾的是,我們這一課可不會(huì)帶大家開始編寫《星際爭(zhēng)霸》這樣的游戲(當(dāng)然我的實(shí)力也遠(yuǎn)遠(yuǎn)夠不上... 那需要一個(gè)專業(yè)團(tuán)隊(duì)耗費(fèi)很多年才能完成),也不會(huì)來寫一個(gè)瀏覽器,或者視頻播放器,等等。

我們會(huì)“慢條斯理”地前進(jìn),因?yàn)槲覀円龅降氖恰疤?shí)”,因?yàn)榧词故蔷帉憽缎请H爭(zhēng)霸》的暴雪團(tuán)隊(duì)中的編程精英,也是從最基礎(chǔ)的編程知識(shí)學(xué)起的。

首先,我們來說一說什么是命令行程序。

我們需要知道,有兩種類型的程序:命令行程序圖形界面程序。

圖形界面程序


簡(jiǎn)單來說,圖形界面程序就是“顯示窗口的程序”。

有過 Windows 使用經(jīng)驗(yàn)的朋友肯定對(duì)這樣的程序不陌生,因?yàn)榫瓦B微軟的 Windows 操作系統(tǒng)的 "Windows"(window 是英語“窗、窗戶”的意思,windows 是 window 的復(fù)數(shù))這個(gè)英語單詞的意思就是“視窗”,Windows 操作系統(tǒng)其實(shí)應(yīng)該翻成“視窗操作系統(tǒng)”。

所以我們平時(shí)也就是在操作形形色色的“窗口”,比如 Chrome 瀏覽器,火狐瀏覽器,QQ,微信,迅雷,視頻播放器,等等。想一想,是不是這些程序都有一個(gè)“窗口”作為最外邊的框架?我們可以打開窗口,關(guān)閉窗口,調(diào)節(jié)窗口大小,操作窗口內(nèi)部的按鈕,等等。

這樣的程序,專業(yè)術(shù)語叫做 GUI 程序。GUI 是 Graphic User Interface 的首字母縮略詞,表示“圖形用戶界面”。

例如下圖中,我們可以看到我們所熟知的 Office Word 軟件:

命令行程序


注意:真正的命令行界面應(yīng)該是完全沒有圖形的,就是一個(gè)只能輸入命令,而且通常是黑色背景,白色字體的“大黑洞”。
我們以下舉例的時(shí)候所說的命令行程序,其實(shí)大多是在圖形界面內(nèi)創(chuàng)建一個(gè)窗口,此窗口內(nèi)就像是命令行界面的屏幕一樣,通常稱為“終端”(Terminal)。

在 Unix 或者 Linux 系統(tǒng)下(可以看我的另一個(gè)系列教程 Linux探索之旅 ),命令行程序相對(duì) Windows 和 macOS 來說用得更多一些。

Windows 里面也有命令行程序,就是大家可能使用過的 cmd.exe 程序(在 Windows 下按 【W(wǎng)indows 鍵(鍵盤左下角有微軟圖標(biāo)的按鍵)+ 字母鍵 R 】, 然后輸入 cmd,回車,就可以調(diào)出),它其實(shí)是微軟 的 Windows 系統(tǒng)基于 Windows 上的命令解釋程序,類似于微軟的 DOS 操作系統(tǒng)。如下圖:

Windows 下 cmd 程序

macOS 里也有 Unix 范式的命令行解釋器:

macOS 下終端

看了 Windows 和 macOS 下的命令行程序,再來看一下我們 Linux(用 Ubuntu 這個(gè) Linux 發(fā)行版來做例子)的命令行程序:

Linux 下終端

雖說終端或者命令行界面看起來比圖形界面“難看”,大家會(huì)說“土啊”... 畢竟這年頭,大家都喜歡“高顏值”的圖形界面程序么。

但是不可諱言,命令行程序是有其獨(dú)到的優(yōu)勢(shì)的。如果命令行沒點(diǎn)絕活,哪能受到我們程序員的青睞。

命令行有如下優(yōu)勢(shì):

  1. 可實(shí)現(xiàn)圖形界面不具有的功能:Linux 的很多程序是面向命令行的,沒有圖形前端,只能用命令行使用。

  2. 可使用超級(jí)用戶權(quán)限:一些需要超級(jí)用戶權(quán)限的操作只能在命令行下運(yùn)行。

  3. 高效快速:可借助正則表達(dá)式實(shí)現(xiàn)批量處理,還能向程序發(fā)送參數(shù)。

  4. 安全性高:可減少因錯(cuò)誤操作或者權(quán)限問題導(dǎo)致的風(fēng)險(xiǎn)。

很多程序員要的就是這個(gè) feel,倍兒爽~

命令行程序中,我們只能使用鍵盤輸入命令,鼠標(biāo)一般是沒什么作為的。文字信息是按從上到下,從左到右的順序顯示。

我們的首期目標(biāo):命令行程序


我們將從命令行程序開始,一點(diǎn)點(diǎn)學(xué)習(xí) C++ 的各樣知識(shí)點(diǎn)。

我知道,雖然掃了在座各位的興致,命令行界面顏值不夠高,但是相對(duì)圖形界面卻更容易創(chuàng)建,特別對(duì)于初學(xué)編程的朋友來說。

當(dāng)然了,之后的課程我們可以在學(xué)習(xí)完了 C++ 的基本知識(shí)點(diǎn)后,用 Qt 這個(gè) C++ 庫來編寫圖形界面的程序,會(huì)有很多好玩的程序等待我們?nèi)?shí)現(xiàn)。

不過大家也不要怕,我們并不需要經(jīng)過艱苦卓絕的“八年抗戰(zhàn)”才能夠資格編寫圖形界面的程序。

好了,說了這么多“廢話”,我們可以正式開始 C++ 編程了。

3. 創(chuàng)建第一個(gè)項(xiàng)目


在上一課中,我們介紹了幾個(gè)主流 的 C/C++ 編程 IDE :CLion,CodeBlocks,Visual Studio,Xcode,Eclipse,VS Code(雖然是代碼編輯器,但是可以通過安裝插件成為輕量級(jí)的 IDE)。

上一課里我們演示了如何用 CodeBlocks 和 Xcode 創(chuàng)建一個(gè) C++ 項(xiàng)目,沒有演示如何用 VS 創(chuàng)建 C++ 項(xiàng)目,那么這一課就來演示如何在 Visual Studio 中創(chuàng)建第一個(gè) C++ 項(xiàng)目,并編譯運(yùn)行。

之后再演示不使用 IDE,而純使用 g++ 命令(對(duì)于 Linux 下的用戶來說,最好使用這個(gè)方式,比用 IDE 可以學(xué)到更多東西)來編譯,并用命令行來運(yùn)行。


Visual Studio 創(chuàng)建 C++ 項(xiàng)目

我是用 Visual Studio 2012 來演示。其他版本的 VS,可能菜單的命名或某些選項(xiàng)窗口會(huì)不一樣,但基本操作應(yīng)該是類似的。

首先,新建一個(gè)項(xiàng)目,有兩種方法,你可以在初始打開 VS 時(shí),點(diǎn)擊如下圖中的“新建項(xiàng)目”:

或者(比較提倡這種方法,因?yàn)椴灰欢看蝿?chuàng)建新項(xiàng)目都是剛打開 VS 時(shí))選擇 “文件 -> 新建 -> 項(xiàng)目” :

用以上兩種方式,都可以調(diào)出以下窗口:

選擇默認(rèn)的 Visual C++ 的 Win32 控制臺(tái)程序就好了,項(xiàng)目名字可以不改,不過我這里改成了 HelloWorld。點(diǎn)擊“確定”,可以看到下圖:

點(diǎn)擊“下一步”,出現(xiàn)下圖:

不需要修改,默認(rèn)配置就好,點(diǎn)擊“完成”。我們的項(xiàng)目就創(chuàng)建好了:

可以看到我們的主要的文件:HelloWorld.cpp。

Windows 生成的 main 函數(shù)名字和一般的不太一樣,叫 _tmain。反正和我們平時(shí)的 main 函數(shù)是類似的。

我們添加我們需要的代碼,之后完整的代碼是這樣:

// HelloWorld.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    // 在屏幕上顯示"Hello World!"
    cout<<"Hello World!"<<endl;
    return 0;
}

至此,我們的主要程序就寫好了。我們來編譯運(yùn)行吧。

首先,編譯代碼。點(diǎn)擊 生成->生成解決方案 (也可以按快捷鍵 F7):

稍等片刻,VS 的下方會(huì)顯示:

顯示“生成:成功”,則表示我們的程序編譯成功了。

接下來運(yùn)行程序,點(diǎn)擊 調(diào)試 -> 開始執(zhí)行(不調(diào)試)(也可以按 Ctrl + F5):

程序運(yùn)行的結(jié)果是輸出“Hello World!”,如下圖:

通過簡(jiǎn)單的幾個(gè)步驟、短短的幾行代碼,就創(chuàng)建了我們的第一個(gè) C++ 程序,并實(shí)現(xiàn)了“Hello World! ”輸出。用 C++ 編程就這么簡(jiǎn)單!

命令行創(chuàng)建 C++ 項(xiàng)目


看過了用 IDE 來創(chuàng)建 C++ 程序的實(shí)例,我們來學(xué)習(xí)一下對(duì)于初學(xué)者,特別是沒接觸過 Linux(一個(gè)操作系統(tǒng),現(xiàn)在主流的操作系統(tǒng)有 Windows,macOS 和 Linux)命令行的朋友來說比較復(fù)雜的方式。如果你完全沒有 Linux 或 Unix 基礎(chǔ),可以跳過此節(jié),就用 IDE 也行。當(dāng)然你也可以通過搜索一些知識(shí)來完成這一節(jié)。

首先,把之前的主要程序用文本編輯器(隨便你用那個(gè)文本編輯器,Nano,Gedit,Vim,Emacs,Sublime Text,Atom,VS Code,等)編寫,然后保存為 HelloWorld.cpp 這個(gè)文件。

#include <iostream>

using namespace std;

int main() {
   cout << "Hello world!" << endl;
   return 0;
}

然后,我們?cè)?Linux 系統(tǒng)下啟動(dòng)終端(Terminal),一般可以在“應(yīng)用->附件->終端”,點(diǎn)擊啟動(dòng)。

或者像 Ubuntu 這樣的 Linux 發(fā)行版,可以同時(shí)按 Ctrl + Alt + T 這三個(gè)鍵來快捷啟動(dòng)終端,終端是長(zhǎng)這個(gè)樣子的:

下面演示的命令,是在 Ubuntu 系統(tǒng)下執(zhí)行的:

  1. 安裝 g++ 編譯器(用于編譯 C++ 程序):
sudo apt-get install g++
安裝 g++ 編譯器
  1. 進(jìn)入 HelloWorld.cpp 這個(gè)文件所在的目錄:
cd "HelloWorld.cpp 這個(gè)文件所在的路徑"

我的 HelloWorld.cpp 文件就存放在家目錄下,所以直接用 cd ~cd 命令就可以。

  1. 編譯程序:
g++ HelloWorld.cpp -o HelloWorld

上面的 -o 參數(shù)里的 o 是 output(英語“輸出”的意思)的縮寫,就是說“用 g++ 編譯 HelloWorld.cpp 這個(gè) C++ 文件,生成的可執(zhí)行程序名字是 HelloWorld”。

  1. 運(yùn)行程序:
./HelloWorld
編譯并運(yùn)行第一個(gè)C++程序

如果你在第 3 步編譯的時(shí)候不用 -o 參數(shù)來指定生成的可執(zhí)行程序名字,g++ 會(huì)為你設(shè)置一個(gè)默認(rèn)的名字,可能會(huì)叫 a.out。如下圖所示:

不用 -o 參數(shù)生成 a.out 可執(zhí)行程序

4. 解釋第一個(gè)項(xiàng)目


雖然我們創(chuàng)建了一個(gè)項(xiàng)目,但是這個(gè)項(xiàng)目很簡(jiǎn)單,只有一個(gè)主要文件,就是 HelloWorld.cpp,它的主要內(nèi)容如下:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

對(duì)于第一次接觸編程的朋友,可能這個(gè)最基礎(chǔ)的代碼也是難以理解。

所以我們才要一起來學(xué)習(xí)如何閱讀這段代碼。

先從第一行開始吧:

#include <iostream>

這一行很特別,我們會(huì)在源代碼開頭的地方見到這樣的以 # 號(hào)開頭的語句。像這樣特別的行,稱為“預(yù)編譯指令”。

這個(gè)術(shù)語聽起來有點(diǎn)復(fù)雜。預(yù)編譯指令會(huì)在編譯開始的時(shí)候,被一種叫做“預(yù)編譯器”的程序所讀取。

其實(shí)編譯器為我們做很多事情,之后的課程會(huì)詳細(xì)來說明。

但是這一行到底是什么意思呢?

這里的 # 號(hào)是預(yù)編譯指令開始的標(biāo)志,沒有什么特別的含義,后面接著的 include 是英語“包含”的意思,所以這句話的意思就是在我們的程序里包含 iostream 這個(gè)文件,這個(gè)文件在 C++ 的系統(tǒng)的庫里已經(jīng)存在了,這些文件被稱為庫文件。

iostream 是英語 Input Output Stream(輸入輸出流)的簡(jiǎn)稱。通常,電腦的輸入流是鍵盤和鼠標(biāo),輸出流是屏幕。

所以 iostream 這個(gè)標(biāo)準(zhǔn)庫頭文件里面就定義了操作輸入輸出流相關(guān)的所有函數(shù)等。

之后的課程,當(dāng)我們要編寫圖形界面程序時(shí),我們會(huì)使用 Qt 這個(gè) C++ 的第三方庫。而我們會(huì)在程序里引入 Qt 這個(gè)頭文件的內(nèi)容,如下:

#include <Qt>

當(dāng)然了,我們每次可以 include 好多個(gè)頭文件。

命名空間:namespace


接著我們看到第二句話:

using namespace std;

這又是什么呢?

我們來介紹一下命名空間(namespace)的概念:

命名空間告訴編譯器去哪里找我們所調(diào)用的東西。

聽著有點(diǎn)暈?命名空間有什么用呢?

例如,你用 #include 語句引入了好多個(gè)庫,而這些庫里有的函數(shù)是重名的。假設(shè)在 iostream 庫中我們定義了 DoSomething 這個(gè)函數(shù),而在 Qt 這個(gè)第三方庫中也定義了相同名字的函數(shù),也叫 DoSomething。那編譯器就不知道用哪個(gè)庫里面所定義的 DoSomething 函數(shù)了。

using 是英語“使用”的意思,所以這句話的意思就是“使用 std 命名空間的東西”。

std 這個(gè)命名空間是很常用的,因?yàn)樗该髁恕皹?biāo)準(zhǔn)命名空間”(std 是 standard 的縮寫,表示“標(biāo)準(zhǔn)”)。我們的 iostream 就是屬于 std 命名空間的。

接著,我們看到了下面的語句:

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

以上我們所看到的語句塊,被稱為函數(shù)(function)。其實(shí) C++ 語言的程序基本就是由函數(shù)來構(gòu)成的。目前我們的程序只有一個(gè)函數(shù)。

我們現(xiàn)在還不會(huì)講很多函數(shù)的細(xì)節(jié),因?yàn)槟鞘且院蟆竞瘮?shù)】那一課的內(nèi)容,現(xiàn)在還早。但是我們會(huì)大體說一下函數(shù)的組成。

第一行包含了函數(shù)的名字,是第二個(gè)單詞:main。main 表示“主要的”,所以這里的函數(shù)被稱為 main 函數(shù),也就是主函數(shù)。main 函數(shù)是一個(gè)特殊的函數(shù),C++ 的程序執(zhí)行總是從 main 函數(shù)開始。

一個(gè)函數(shù)有開始和結(jié)束,使用大括號(hào) {} 來標(biāo)識(shí)。所以我們的 main 函數(shù)包含以下兩行代碼

cout << "Hello World!" << endl;
return 0;

這些在函數(shù)里的行也有名字,被稱為“指令”(instruction)。每一條指令都會(huì)讓電腦做特定的事情。一個(gè)函數(shù)大體來說是用來集中一定數(shù)目的指令。比如我們可以創(chuàng)建一個(gè)函數(shù)叫做“打開文件”,這個(gè)函數(shù)會(huì)讓電腦為你打開某個(gè)文件。

函數(shù)的優(yōu)勢(shì)就是當(dāng)你寫好了這個(gè)函數(shù)之后,你只需要使用(專業(yè)術(shù)語叫做 “調(diào)用”)“打開文件”這個(gè)函數(shù),電腦就會(huì)為你執(zhí)行函數(shù)里面的指令。你不需要每次在要實(shí)現(xiàn)“打開文件”功能的地方都重復(fù)寫那些指令。

函數(shù)可以大大節(jié)約代碼空間,增加利用率,提高效率。

這一行指令

cout << "Hello World!" << endl;

使得屏幕顯示 Hello World! 這一句話。

它由三部分組成:

  1. cout :在標(biāo)準(zhǔn)輸出(此處是屏幕)上顯示信息。
  2. "Hello World!" :要顯示的內(nèi)容。
  3. endl :表示換行。

當(dāng)你的程序執(zhí)行到這一行時(shí),就在屏幕上顯示相應(yīng)的信息,然后換行。

cout 類似 C 語言的 printf 函數(shù),是 C++ 里面負(fù)責(zé)標(biāo)準(zhǔn)輸出的。不過又有不同,我們可以看到 cout 后面不是加括號(hào),而是連接了 << 這個(gè)特殊的符號(hào)。

暫時(shí)我們不深入,因?yàn)?cout 其實(shí)不是一個(gè)函數(shù),cout 是一個(gè) ostream 類的對(duì)象(關(guān)于類和對(duì)象,我們之后的課程會(huì)講解),它有一個(gè)成員運(yùn)算符函數(shù) operator<< (涉及到 C++ 的運(yùn)算符重載的技術(shù),以后的課程會(huì)講)。(這一句指令暫時(shí)不需要理解,只需要知道這句話的作用)。

cout 的定義是在 iostream 庫的 std 命名空間中,現(xiàn)在你知道

#include <stdio.h>

using namespace std;

這兩句話的重要性了吧?如果沒有引入 iostream 這個(gè)庫并且不指明使用哪個(gè)命名空間的話,那我們的 main 函數(shù)就不能調(diào)用 std 的 cout。

假如你沒加

using namespace std;

這一句話,那么調(diào)用 cout 時(shí)須要加上 std:: 這樣的前綴:

#include <iostream>

int main() {
    std::cout << "Hello World!" << endl;
    return 0;
}

而第二個(gè)指令

return 0;

大體上說來就是表示函數(shù)結(jié)束了,并且返回 0 值。return 是英語“返回”的意思。

為什么我們的 main 函數(shù)返回 0,而不是返回其他值呢?

實(shí)際上,每個(gè) C++ 語言的程序結(jié)束時(shí)都會(huì)返回一個(gè)值,0 表示一切正常結(jié)束,其他的值表示異常。

這里我們只是簡(jiǎn)單介紹了函數(shù)的概念,關(guān)于函數(shù)的細(xì)節(jié)請(qǐng)看之后的課程。

5. 注釋及代碼整潔之道


在結(jié)束這一課前,我們必須再來講一下注釋(comment)。不論什么編程語言,我們都可以在源代碼里添加注釋。C++ 語言當(dāng)然不例外。

注釋,到底是什么啊 ?

簡(jiǎn)單地說,注釋就是在你程序之中用來標(biāo)注這個(gè)程序的作用,某一行代碼的作用等等的文字。注釋真的很重要,因?yàn)榧词故且粋€(gè)計(jì)算機(jī)天才,也要在程序中做一些注解。

注釋有如下作用:

  • 在之后閱讀自己寫的代碼時(shí)不至于迷失方向。不可否認(rèn),在重新閱讀之前寫的代碼時(shí),我們常常會(huì)忘記這個(gè)函數(shù)是干什么的,那個(gè)地方為什么要這樣寫。特別是代碼量很大,幾千幾萬行甚至更多時(shí),如果沒有注釋,那閱讀起來會(huì)很費(fèi)力。

  • 如果你把你的代碼給別人閱讀,注釋可以節(jié)省對(duì)方理解你的代碼的時(shí)間。

要在代碼中插入注釋,有幾種形式:

  • 如果你的注釋比較短,在一行里就能寫完,那可以用 //... 這樣的形式。

  • 如果你的注釋跨越好幾行,那可以用 /* ... */ 的形式。

我們可以對(duì)之前的代碼添加注釋,變成如下:

#include <iostream>  // 引入 iostream 這個(gè)庫 (為了使用 cout)

using namespace std;  // 指明要使用的命名空間

/*
主函數(shù) main
所有的 C++ 程序都從 main 函數(shù)開始
*/

int main() {
    cout << "Hello, World!\n" << endl;  // 在屏幕上顯示 "Hello, World!",并且換行
    return 0;  // 結(jié)束 main 函數(shù),也就是結(jié)束程序
}

可以看到,雖然程序行數(shù)變多了,但注釋卻使我們的代碼變得易讀很多。

編譯代碼的時(shí)候,編譯器會(huì)忽略所有的注釋。這些注釋不會(huì)出現(xiàn)在最終的程序里,只是為程序員自己和閱讀程序的其他人服務(wù)的。

記住:
注釋要起到引導(dǎo)閱讀代碼的作用,以便理清頭緒。但是不要在太過淺顯易懂的地方添加注釋。

引用 IBM 公司的一句格言:
“如果一個(gè)程序,在你僅僅看完它的注釋之后,你不能了解它的作用,那么把這個(gè)程序扔了吧。”
-- 大公司就是這么嚴(yán)格,這么任性。

代碼整潔之道


其實(shí)我們的程序完全可以寫成這樣,也是正確的,可以編譯運(yùn)行,輸出 Hello World! 。

#include <iostream>
using namespace std; int main()
{
cout << "Hello world!"<< endl; return 0; }

因?yàn)榫幾g器并不介意你的程序是不是“規(guī)范”。

但這樣的程序問題是什么呢?

“亂七八糟”,可以這么形容。因?yàn)檫@樣的程序風(fēng)格使得別人很不容易閱讀你的代碼,甚至過了一段時(shí)間可能你自己也會(huì)摸不著頭腦。

如果你去面試,寫出這樣的程序,那九成是不會(huì)被錄取的。除非你參加“國(guó)際 C 語言亂碼大賽(IOCCC)”。

所以一開始就養(yǎng)成良好的代碼風(fēng)格是很重要的。

推薦大家去看林銳編寫的 《高質(zhì)量 C++/C 編程指南》 。

其實(shí)我個(gè)人更喜歡直接參考 Google 公司的 C++ 代碼規(guī)范:https://google.github.io/styleguide/cppguide.html

6. 總結(jié)


  1. 有兩種程序:命令行程序 和 圖形界面程序。

  2. 剛開始學(xué)編程,實(shí)現(xiàn)命令行程序更簡(jiǎn)單。所以我們從命令行程序開始學(xué)習(xí)。

  3. 一個(gè) C++ 程序總是有 main 函數(shù):這是程序運(yùn)行的入口。

  4. cout 可以在屏幕上顯示信息。

  5. 我們可以給程序添加注釋,以詳述其作用。C++ 中的注釋有兩種形式:// 注釋 或者 /* 注釋 */ 。

7. 第一部分第四課預(yù)告


今天的課就到這里,一起加油吧!

下一課:C++探索之旅 | 第一部分第四課:內(nèi)存,變量和引用


我是 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營(yíng)者,慕課網(wǎng)精英講師 Oscar 老師,終生學(xué)習(xí)者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標(biāo)桿直跑”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容