C語言筆記 1(zz)

來源:互聯網
上載者:User
C語言筆記  by kingwei

1 概述
1.1 發展曆史
C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中並沒有定義一個完整的標準C語言,後來由美國國家標準局在此基礎上制定了一個C 語言標準,於一九八三年發表。通常稱之為ANSI C。
C語言是一種結構化語言。它層次清晰,便於按模組化方式組織程式,易於調試和維護。由於C語言實現了對硬體的編程操作,因此C語言集進階語言和低級語言的功能於一體,因此也有人稱它為中級語言。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類電腦上,從而形成了多種版本的C語言。
目前最流行的C語言有以下幾種:
·Microsoft C 或稱 MS C
·Borland Turbo C 或稱 Turbo C
·AT&T C

1.2 程式結構舉例
本文檔中列舉的代碼均在Dev-C++中運行通過。
下面這個程式先重新導向標準輸入輸出資料流,然後,從檔案in.txt中讀取資料,調用標準庫函數qsort,升序排序後輸出到檔案out.txt。

#include <stdio.h>                              /* 包含標頭檔 */
#include <stdlib.h>

#define MAX_LENGTH    100                       /* 宏定義 */

int length;                                     /* 定義全域變數 */
int list[MAX_LENGTH];

int Comp(const void *p1, const void *p2)        /* 定義函數體 */
{
        int e1 = *((int *)p1);                  /* 定義局部變數 */
        int e2 = *((int *)p2);
        if (e1 > e2)                            /* 分支結構(if-else) */
                return 1;
        else if (e1 < e2)
                return -1;
        else
                return 0;                       /* 向主調函數傳回值 */
}

int main()                                      /* 主函數 */
{
        int i;
        
        freopen("in.txt", "r", stdin);          /* 順序結構 */
        freopen("out.txt", "w", stdout);

        while (scanf("%d", &length) != EOF)     /* 迴圈結構(while) */
        {
                for (i=0; i<length; i++)            /* 迴圈(for)控制輸入 */
                        scanf("%d", &list[i]);
                qsort((void *)list, length, sizeof(int), Comp);
                for (i=0; i<length; i++)            /* 迴圈(for)控制輸出 */
                        printf("%d ", list[i]);
                printf("/n");
        }
        
        return 0;                               /* 進程向系統傳回值 */
}

1.3 編譯、串連
任何一種電腦語言都要從某種人們容易理解的形式(原始碼)轉化成電腦可以執行的形式(機器指令)。對於C語言程式,首先需要對原始碼作預先處理,前置處理器(preprocessor)對先行編譯指令進行處理,產生的程式碼通常存放在一個中間檔案中。然後使用編譯器(compiler),將中間檔案編譯成為目標檔案。最後經過連接器(linker),將目標模組和庫進行串連,並添加啟動模組,才能最終成為系統可以載入和執行的程式。
開發環境              編譯(compile)             串連(link)
(工具)     C源檔案 --------------> 目標檔案 ------------>最終檔案

Windows       *.c                     *.obj           *.exe 可執行檔
(VC)                                                *.lib 靜態庫檔案
                                                      *.dll 動態庫檔案

Linux         *.c                      *.o            *.--- 可執行檔
(KDevelop)                                          *.a   靜態庫檔案
                                                      *.so  動態庫檔案

因此,將TC、VC等程式設計軟體稱為編譯器是不恰當的,這些軟體是整合了編輯、預先處理、編譯、串連、調試等工具的整合式開發環境。以Dev-C++為例,它提供了一個視窗介面的編輯環境和一些配置選項,但內部編譯器仍然是gcc/g++、內部調試工具是gdb.exe。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.