當前位置:
首頁 > 知識 > C語言入門---程序結構

C語言入門---程序結構

在計算機中,程序是被一句一句執行的。C 語言中安排了三種結構來組織這樣一句一 句的程序,分別為順序結構、分支結構和循環結構。使用這三種結構,可以完成任何複雜 的程序,這三種結構也是寫複雜 C 語言程序的基礎。

一、簡單語句

在 C 語言中,語句就是能夠獨立完成一個簡單功能的基本構成單位。程序是由一條條 的語句組成和執行的,每一條語句完成一個基本的功能。最基礎的不可再分的 C 語言語句 被稱為簡單語句。之前,已經見過好多 C 語言的簡單語句了。例如,「radius = 3;」就是一條簡單語句。 C 語言中常見的簡單語句有 4 種:表達式語句、空語句、控制語句和函數調用語句。先來 介紹兩種簡單的語句:表達式語句和空語句。其他的語句形式和作用將在講解完相應的知 識點之後再作介紹。

C語言入門---程序結構

1.1、表達式語句

表達式語句就是在表達式後面加分號構成的語句,形式如下:

表達式 ;

像這樣的表示,就構成了一條表達式語句,可以在程序中完成一定的功能。例如,下

面就是曾見過的表達式語句,只是當時並沒有給出具體的名字而已。

radius = 1;

10/5;

~-2;

該程序中,第一個語句就是一個賦值表達式語句,它完成的功能就是把 1 賦值給變數 radius。第二個語句是一個除法運算表達式語句,它完成 10 除以 5 的運算。第三個語句是 按位取反表達式語句,它計算–2 按位取反的結果。

這些我們所熟悉的賦值運算、除法運算、按位取反運算所組成的賦值語句、除法運算

語句、按位取反語句,都屬於表達式語句。

1.2、空語句

空語句在 C 語言中很少用到,它的作用就是什麼都不幹,讓計算機空轉,它的主要目 的就和我們軍訓的時候原地踏步是一樣的,是為了暫時等待其他的東西先完成。

空語句的形式為一個簡單的「;」,其他什麼都沒有: ;一個單獨的分號就是告訴計算機,先等一等,在此暫留一步,然後再往下執行其他的語句。

二、語句塊

語句塊有時也被稱為複合語句。之所以叫它複合語句,是因為它是由其他簡單語句組

成的,看著像一塊語句,所以也叫語句塊。

2.1、語句塊的形式

C 語言中的語句塊是由一對大括弧和其中包含的若干條語句組成的,形式如下所示:若要寫一個包含幾個表達式語句和空語句的語句塊,就可以用下面的形式:這是一個語句塊的例子,其中包含四個已經了解的語句,依次為賦值表達式語句、空語句、除法運算表達式語句和按位取反表達式語句。

{

語句 1;

語句 2;

...

語句 n;

}

若要寫一個包含幾個表達式語句和空語句的語句塊,就可以用下面的形式:

;

這是一個語句塊的例子,其中包含四個已經了解的語句,依次為賦值表達式語句、空

語句、除法運算表達式語句和按位取反表達式語句。

2.2、語句塊的嵌套

C 語言中的語句塊中是可以包含語句塊的,叫做語句塊嵌套。語句塊中的語句塊被當

作一個簡單的語句來處理。例如,下面是一個語句塊嵌套的包含表達式語句和空語句的例子。

;

~-2;

這個程序中的語句塊稍微有點複雜,語句「10/5;」和「~-2;」這兩個語句被大括弧括 起來組成了一個語句塊,這個語句塊又和「radius = 1;」、「;」一起被另一個大括弧括了 起來,組成了一個更複雜的語句塊。

三、變數的作用域

在 C 語言中,變數的作用域就是可以使用這個變數的範圍。每個變數都是有作用域的, 如果變數在作用域之外,我們就不能使用它了,否則就會出錯。這就好比,你的孩子在家 的時候,你可以喊「Baby」,他會馬上跑過來,但是你的孩子去外婆家了,你再喊「Baby」, 就沒人答應了。

在 C 語言中,常見的變數都是在語句塊里聲明定義的,這些變數被稱為局部變數。局 部變數在 C 語言中的使用要遵循下面三個規則。

3.1、 局部變數的聲明定義位置規則

C 語言規定,變數的聲明定義必須位於該語句塊中的所有語句之前。也就是說一個語

句塊的最合理的形式為:最前面全是局部變數的聲明定義,後邊全是語句,就像下面這樣:

{

變數聲明定義 1;

變數聲明定義 2; ... 變數聲明定義 n;

語句(或語句塊)1; 語句(或語句塊)2;

...

語句(或語句塊)n;

}

在上面的格式中,變數的聲明定義的次序可以無論先後。但是,變數的聲明定義絕對

不能位於語句之後,否則開發工具將會告訴你編譯出錯。例如,下面的這個程序就違反了這個規則,導致編譯出錯。

#include

int main

int radius;

radius =1;

int result;

result = 3*radius;

}

return 0;

}

在程序進行編譯的時候出現編譯錯誤信息,如圖 4.1 所示。這是由於在語句塊中,變數 result 的聲明定義位於賦值語句之後導致的。只要將 result 整型變數的聲明定義放到賦值 語句 radius=1 之前,就滿足上面的規則了,也就不會出現這樣的錯誤了,不信,可以試 一試!

3.2、局部變數的作用域規則

正確地在語句塊中聲明定義局部變數以後,來看看關於局部變數的作用域規則:局部 變數的作用域為它所在的語句塊,也就是局部變數只有在它聲明定義的語句塊中是可以使 用的,出了這個語句塊範圍,再使用這個變數將會出錯。從語句塊的構成來看,局部變數的作用域就是它所在的一對大括弧之間,出了這個大括弧再使用這個變數就會出現錯誤。例如,下面的代碼就犯了這個錯誤。

在程序中,在一個語句塊中聲明定義了兩個變數。但是,在語句塊外面的一個賦值運 算語句「resutl=3*radius;」中使用了這兩個變數,結果導致了錯誤,如圖 4.2 所示。「radius」 和「result」是未聲明的標識符。

3.3、嵌套語句塊的同名變數作用域規則

我們知道一個局部變數的作用域為它所在的語句塊之中。對於一個嵌套的語句塊,如 果外面的語句塊和裡面的語句塊都有一個同樣名字的局部變數,那該怎麼辦?就像下面所示:

{

A 變數聲明定義;

A 的操作語句;

嵌套語句塊內外都有 A 的聲明定義,那麼裡面 A 的操作語句到底是對哪個 A 進行操 作的呢?

C 語言使用的規則為:就近原則。也就是說代碼「A 的操作語句」,使用的是裡面的 語句塊的變數 A。這就好像,家裡有兩個孩子,一個在客廳,一個在卧室,你在卧室喊了 聲「Baby」,肯定是卧室的孩子會向你跑來。可以使用下面的程序來驗證一下這個規則:

int i;

i = 1;

{

int i; i = 10;

i--;

printf("%d ",i);

}

i++;

return 0;

}

程序中,有一個嵌套的語句塊。內外的語句塊中都聲明定義了一個整型變數 i,外面 的 i 賦值為 1,並對其進行自增運算,裡面的 i 賦值為 10,並對其進行自減運算,然後分 別使用printf函數輸出結果。程序的結果為 9 和 2,如圖 4.3 所示,符合上面所述的「就 近原則」。

四、最常見的語句執行結構——順序結構

在 C 語言中,語句的組織是可以按照不同的方式進行的,對於每一種方式組織的語句, 執行順序都是不同的。順序結構是其中最簡單的組織方式,它是按照程序中 C 語言語句的 順序一句一句地執行的。

4.1、順序結構的一般形式

順序結構在 C 語言程序中的形式如下所示,一條語句接著一條語句往下寫:

語句 1;

語句2 ;

...

語句 n-1;

語句 n;

假設,程序中有 n 條語句,並且是按照順序結構組織的,那麼,程序就會從第一條語 句開始一直順序地執行到第 n 條語句。

4.2、順序結構的例子

看看實際的順序結構的例子吧,下面的程序有好幾條語句,它們都是按照順序結構組織的。

int i = 0;

i = 5;

程序中寫了兩個賦值語句和兩個 i++自增表達式語句。它們是按照順序結構的方式組 織的,一條在另一條之後,程序的輸出如圖 4.5 所示。從程序輸出中可以看出,順序結構 組織的語句確實是一條一條地執行的。程序先輸出了一個 0,表示初始化賦值語句已經執行。接下來程序輸出為 1,表示 i 自增運算已經完成。再接著程序輸出為 5,表示 i 賦值為 5 語句執行成功。最後程序輸出 為 6,表示 i 再一次自增成功。這正是順序結構程序執行的順序。

關注微信公眾號「 書問 」,免費領取萬本好書

C語言入門---程序結構

書名:C語言入門很簡單

作者:馬磊 等 著

出 版 社:清華大學出版社

定價:¥49.00

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 書問科普 的精彩文章:

「大大」教你做父親
周惠老人

TAG:書問科普 |