原文:Exercise 5: The Structure Of A C Programhtml
譯者:飛龍git
你已經知道了如何使用printf
,也有了能夠隨意使用的一些工具,如今讓咱們逐行分析一個簡單的C程序,以便你瞭解它是如何組織的。在這個程序裏你會編寫一些不是很熟悉的東西,我會輕鬆地把它們拆開。以後在後面的幾章咱們將會處理這些概念。github
#include <stdio.h> /* This is a comment. */ int main(int argc, char *argv[]) { int distance = 100; // this is also a comment printf("You are %d miles away.\n", distance); return 0; }
手動輸入這段代碼並運行它,以後確保在Valgrind
下不出現任何錯誤。你可能不會這樣作,但你得習慣它。數組
這真是一段無聊的輸出,可是這個練習的目的是讓你分析代碼:函數
$ make ex5 cc -Wall -g ex5.c -o ex5 $ ./ex5 You are 100 miles away. $
當你輸出這段代碼時,可能你只弄清楚了這段代碼中的一小部分C語言特性。讓咱們快速地逐行分解它,以後咱們能夠作一些練習來更好地瞭解每一部分:工具
ex5.c:1學習
這是一個include
,它是將一個文件的內容導入到這個文件的方式。C具備使用.h
擴展名做爲頭文件的慣例。頭文件中擁有一些函數的列表,這些都是你想在程序中使用的函數。this
ex5.c:3操作系統
這是多行註釋,你能夠在/*
和*/
之間放置任意多行。命令行
ex5.c:4
這是一個你遇到的更復雜的 main
函數。操做系統加載完你的程序,以後會運行叫作main
的函數,這是C程序的工做方式。這個函數只須要返回int
,並接受兩個參數,一個是int
做爲命令行參數的數量,另外一個是char*
字符串的數組做爲命令行參數。這是否是讓人難以理解?不用擔憂,咱們稍後會講解它。
ex5.c:5
任何函數都以{
字符開始,它表示「程序塊」的開始。在Python中用一個:
來表示。在其它語言中,可能須要用begin
或者do
來表示。
ex5.c:6
一個變量的聲明和同時的賦值。你可使用語法type name = value;
來建立變量。在C的語句中,除了邏輯語句,都以一個;
(分號)來結尾。
ex5.c:8
註釋的另外一種形式,它就像Python或Ruby的註釋。它以//
開頭,直到行末結束。
ex5.c:9
調用了咱們的老朋友printf
。就像許多語言中的函數調用,使用語法name(arg1, arg2);
。函數能夠不帶任何參數,也能夠擁有任何數量的參數。printf
函數是一類特別的函數,能夠帶可變數量的參數。咱們會在以後說明。
ex5.c:11
一個main
函數的返回語句,它會向OS提供退出值。你可能不熟悉Unix軟件的返回代碼,因此這個也放到後面去講。
ex5.c:12
最後,咱們以一個閉合的}
花括號來結束了main
函數。它就是整個程序的結尾了。
在此次分解中有大量的信息,因此你應該逐行來學習,而且確保至少掌握了背後發生了什麼。你不必定了解全部東西,可是在咱們繼續以前,你能夠猜猜它們的意思。
對於每一行,寫出你不理解的符號,而且看看是否能猜出它們的意思。在紙上寫下你的猜想,你能夠在之後檢查它,看看是否正確。
回頭去看以前幾個練習的源代碼,而且像這樣分解代碼,來看看你是否瞭解它們。寫下你不瞭解和不能本身解釋的東西。