笨辦法學C 練習5:一個C程序的結構

練習5:一個C程序的結構

原文: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函數。它就是整個程序的結尾了。

在此次分解中有大量的信息,因此你應該逐行來學習,而且確保至少掌握了背後發生了什麼。你不必定了解全部東西,可是在咱們繼續以前,你能夠猜猜它們的意思。

附加題

  • 對於每一行,寫出你不理解的符號,而且看看是否能猜出它們的意思。在紙上寫下你的猜想,你能夠在之後檢查它,看看是否正確。

  • 回頭去看以前幾個練習的源代碼,而且像這樣分解代碼,來看看你是否瞭解它們。寫下你不瞭解和不能本身解釋的東西。

相關文章
相關標籤/搜索