c 結束程式 c 程式的結構

2021-10-11 06:19:05 字數 3335 閱讀 2518

學習程式語言的最好方法是編寫程式。通常,初學者編寫的第乙個程式是乙個名為「你好世界」的程式,它只需在你的電腦螢幕上列印「你好世界」。雖然很簡單,但它包含了c++程式的所有基本元件:

// my first program in c++

#include int main()

hello world!
上面的上面板顯示了這個程式的c++**。下邊的面板顯示了計算機執行程式的結果。面板左邊的灰色數字是行號,便於討論程式和研究錯誤。他們不是計畫的一部分。

讓我們逐行檢查這個程式:

第1行://我在c+中的第乙個程式用兩個斜槓表示行的其餘部分是程式設計師插入的注釋,但對程式的行為沒有影響。程式設計師使用它們包括關於**或程式的簡短解釋或觀察。在本例中,這是對程式的簡要介紹性描述。

第2行:#include以雜湊符號(#)開頭的行是由所謂的預處理器讀取和解釋的指令。它們是在編譯程式本身之前解釋的特殊行。在這種情況下,指令#include指示預處理程式包括一段標準c+**,稱為報頭碘流,允許執行標準輸入和輸出操作,例如將此程式(hello world)的輸出寫入螢幕。

第3行:空白行。空行對程式沒有影響。它們只是提高了**的可讀性

第4行:intmain()這一行啟動函式的宣告。從本質上說,函式是一組**語句,它們被賦予乙個名稱:在本例中,這將名稱「main」給後面的一組**語句。函式將在後面的一章中詳細討論,但本質上,它們的定義是通過繼承型別(int)、名稱(main)和一對括號()(可選地包括引數)來引入的。

名為main的函式是所有c+程式中的乙個特殊函式;它是程式執行時呼叫的函式。所有c+程式的執行都從主函式開始,不管函式在**中的實際位置如何。

第5行和第7行:第5行的開括號()表示其結束。這些大括號之間的所有內容都是函式的主體,它定義了呼叫main時會發生什麼。所有函式都使用大括號來表示其定義的開始和結束。

第6行:std:cout<

這個語句有三個部分:第一部分,std:cout,它標識標準字元輸出裝置(通常,這是計算機螢幕)。第二,插入操作符(<

注意,語句以分號(;)結尾。這個字元標誌著語句的結尾,就像句號在英語中結束一樣。所有c+語句必須以分號字元結尾。c+中最常見的語法錯誤之一是忘記用分號結束語句。

您可能已經注意到,並非此程式的所有行在執行**時都執行操作。有一行包含注釋(以/開頭)。預處理器有乙個指令行(從#開始)。有一行定義了函式(在本例中是主函式)。最後,一行語句以分號結尾(插入cout),它位於主函式的大括號({})分隔的塊內。

該程式以不同的線條結構和適當的縮排,以使人們更容易理解它的閱讀。但是c+在縮排或如何分割不同行的指令方面沒有嚴格的規則。例如,而不是

int main ()

我們本可以寫到:

int main ()
所有這些都在一行中,這將具有與前面的**完全相同的含義。在c+中,語句之間的分隔是用結束分號(;)指定的,將語句分隔成不同的行並不重要。許多語句可以寫在一行中,也可以在自己的行中。**在不同行中的劃分只會使可能閱讀它的人更容易讀懂,但對程式的實際行為沒有任何影響。現在,讓我們為我們的第乙個程式新增乙個額外的語句:

// my second program in c++

#include int main ()

結果:

hello world! i'm a c++ program
在本例中,程式在兩個不同的語句中對std:cout執行兩個插入。同樣,不同**行中的分離只會給程式帶來更大的可讀性,因為main可以通過這種方式定義為完全有效的:

int main ()

int main ()

結果也會和前面的例子完全一樣。預處理器指令(以#開頭的指令)不符合這一般規則,因為它們不是語句。它們是在正確的編譯開始之前由預處理程式讀取和處理的行。預處理指令必須在自己的行中指定,並且由於它們不是語句,所以不必以分號(;)結尾。

如上所述,注釋不影響程式的操作;但是,它們提供了乙個重要的工具,可以在源**中直接記錄程式的功能和操作方式。c++支援兩種注釋**的方法:

// line comment

/* block comment */

它們中的第乙個被稱為行注釋,它丟棄從找到一對斜槓符號(/)到同一行末尾的所有東西。第二個注釋稱為塊注釋,它丟棄/*字元和*/字元的第乙個外觀之間的所有內容,並可能包含多行。讓我們在第二個程式中新增注釋:

/* my second program in c++

with more comments */

#include int main ()

結果:

hello world! i'm a c++ program
如果注釋包含在程式的源**中,而沒有使用注釋字元組合/、/*或*/,編譯器會將它們視為c+表示式,這很可能導致編譯失敗,出現一條或幾條錯誤訊息。

如果您以前見過c++**,那麼您可能已經看到cout正在被使用,而不是std:cout。兩個名稱都相同:第乙個物件使用它的非限定名(cout),而第二個物件直接在命名空間std中限定它(如std:cout)。cout是標準庫的一部分,標準c+庫中的所有元素都在命名空間(命名空間std)中宣告。為了引用std命名空間中的元素,程式必須限定庫元素的每一次使用(就像我們用std:字首cout所做的那樣),或者引入其元件的可見性。引入這些元件可見性的最典型方法是使用宣告:

using namespace std;
上面的宣告允許以不限定的方式訪問std命名空間中的所有元素(沒有std:字首)。考慮到這一點,可以重寫最後乙個示例,使cout成為不合格的用途,如下所示:

// my second program in c++

#include using namespace std;

int main ()

結果:

hello world! i'm a c++ program
訪問std命名空間元素的兩種方法(顯式限定和使用宣告)在c+中都是有效的,並產生完全相同的行為。為了簡單起見,為了提高可讀性,這些教程中的示例將更多地使用後一種方法來使用宣告,不過請注意,顯式限定是保證名稱衝突不會發生的唯一方法。

C程式的結構

c 程式主要包括以下部分 1 預處理指令 2 主函式 3 主函式體 4 注釋 說明文字 示例 book0.c 接下來我們講解一下上面這段程式。1 以上是程式開始的說明文字,程式編譯時將忽略它。用於注釋多行文字,是開始,是結束。用於注釋一行文字。注釋的目的是為了提高程式的可讀性,是給程式設計師看的,不...

C 程式的結構

1 作用域和可見性 1.1 函式原型中的引數其作用域僅在 內。因此引數名稱可有可無,但是引數型別需要宣告。1.2 塊作用域 在塊中宣告的識別符號其作用域自宣告處起,限於塊中。1.3 類作用域 類作用域作用於特定的成員名。如類x的成員m具有類作用域,對m的訪問方式如下 如果在x的成員函式中沒有宣告同名...

C 程式的記憶體結構

問題引出 在看一些資料部落格的時候說執行緒共享同乙個程序的 段和資料段,又有說法是 段和資料段在可執行檔案中載入,比較疑惑,下面稍微具體的整理一下。int a 0 全域性初始化區 char p1 全域性未初始化區 main int b 棧 char s abc 棧 char p2 棧 char p3...