C語言 - 概述



C 是一種通用、高階語言,最初由 Dennis M. Ritchie 開發,用於在貝爾實驗室開發 UNIX 作業系統。C 最初於 1972 年在 DEC PDP-11 計算機上實現。

1978 年,Brian Kernighan 和 Dennis Ritchie 釋出了 C 的第一個公開描述,現在稱為 K&R 標準。

UNIX 作業系統、C 編譯器以及基本上所有 UNIX 應用程式都已用 C 編寫。C 現在已成為廣泛使用的專業語言,原因如下:

  • 易於學習
  • 結構化語言
  • 它生成高效的程式
  • 它可以處理低階活動
  • 它可以在各種計算機平臺上編譯

關於 C 的事實

  • C 是為了編寫一個名為 UNIX 的作業系統而發明的。

  • C 是 B 語言的繼任者,B 語言大約在 1970 年代初推出。

  • 該語言於 1988 年由美國國家標準學會 (ANSI) 正式化。

  • UNIX OS 完全是用 C 編寫的。

  • 如今,C 是使用最廣泛和最流行的系統程式語言。

  • 大多數最先進的軟體都是使用 C 實現的。

  • 如今最流行的 Linux OS 和 RDBMS MySQL 都是用 C 編寫的。

為什麼要使用 C 語言?

C 最初用於系統開發工作,特別是構成作業系統的程式。C 被用作系統開發語言,因為它生成的程式碼執行速度幾乎與用匯編語言編寫的程式碼一樣快。

C 的一些使用示例可能包括:

  • 作業系統
  • 語言編譯器
  • 彙編程式
  • 文字編輯器
  • 印表機後臺程式
  • 網路驅動程式
  • 現代程式
  • 資料庫
  • 語言直譯器
  • 實用程式

C 涵蓋了程式設計的所有基本概念。它是學習面向物件程式設計(如 C++Java.Net 等)的基礎或母程式語言。許多現代程式語言(如 C++、Java 和 Python)借鑑了 C 的語法和概念。

它提供了對硬體的細粒度控制,使其效率極高。因此,C 通常用於開發系統級程式,例如設計 作業系統、OS 核心等,也用於開發文字編輯器、編譯器、網路驅動程式等應用程式。

C 程式是可移植的;因此,它們可以在不同的平臺上執行,而無需進行重大修改。

C 在程式設計歷史程序中作為一種基礎程式語言發揮了關鍵作用。然而,與更現代的語言相比,其在應用程式開發中的普及程度有所下降。這可能是由於其低階特性以及存在提供更多預先存在的抽象和功能的高階語言。然而,在效能最佳、系統資源精細管理以及可移植性迫切需求等因素至關重要的領域,程式語言 C 的使用仍然不可或缺。

C語言的優點

以下是 C 語言的優點:

  • 效率和速度 - C 以其高效能和效率而聞名。它可以讓你在低階水平上使用記憶體,以及允許直接訪問硬體,使其成為需要速度和經濟資源使用的應用程式的理想選擇。

  • 可移植性 - C 程式可以在不同的平臺上編譯和執行,而只需進行最少的或無需修改。這種可移植性是由於該語言已標準化並且編譯器可用於全球各種作業系統。

  • 接近硬體 - C 允許透過使用 指標 和低階操作來直接操作硬體。這使得它適合於系統程式設計和開發需要對硬體資源進行細粒度控制的應用程式。

  • 標準庫 - 對於諸如 輸入/輸出操作字串 操作和數學計算之類的常見任務,C 帶有一個大型標準庫,它透過利用預先構建的函式來幫助開發人員更有效地編寫程式碼。

  • 結構化程式設計 - C 有助於將程式碼組織成模組化且易於理解的 結構。使用 函式迴圈條件語句,開發人員可以生成清晰易於維護的程式碼。

  • 過程式語言 - C 遵循過程式正規化,對於某些型別的程式設計任務,這種正規化通常更簡單、更直接。

  • 通用性 - C 語言是一種通用的程式語言,可用於各種型別的軟體,例如系統應用程式、編譯器、韌體、應用程式軟體等。

C語言的缺點

以下是 C 語言的缺點/不足之處:

  • 手動記憶體管理 - C 語言需要手動記憶體管理,其中開發人員必須顯式地負責分配和釋放記憶體。

  • 沒有面向物件特性 - 如今,大多數程式語言都支援 OOPs 特性。但 C 語言不支援它。

  • 沒有垃圾回收 - C 語言不支援垃圾回收的概念。開發人員需要手動分配和釋放記憶體,這可能容易出錯並導致記憶體洩漏或記憶體使用效率低下。

  • 沒有異常處理 - C 語言不提供任何用於處理異常的庫。開發人員需要編寫程式碼來處理所有型別的異常。

C語言的應用

以下是 C 語言的應用:

  • 系統程式設計 - C 語言用於開發靠近硬體的系統軟體,例如作業系統、韌體、語言翻譯器等。

  • 嵌入式系統 - C 語言用於嵌入式系統程式設計,用於各種裝置,例如微控制器、工業控制器等。

  • 編譯器和直譯器 - C 語言非常普遍地用於開發語言編譯器和直譯器。

  • 資料庫系統 - 由於 C 語言對於低階記憶體操作高效且快速。它用於開發 DBMS 和 RDBMS 引擎。

  • 網路軟體 - C 語言用於開發網路軟體,例如協議、路由器和網路實用程式。

  • 遊戲開發 - C 語言廣泛用於開發遊戲、遊戲應用程式和遊戲引擎。

  • 科學和數學應用 - C 語言在開發需要科學計算的應用程式方面非常高效。諸如模擬、數值分析和其他科學計算的應用程式通常使用 C 語言開發。

  • 文字編輯器和 IDE - C 語言用於開發文字編輯器和整合開發環境,例如 Vim 和 Emacs。

C 程式設計入門

要有效地學習 C 語言,我們需要首先了解其結構。每種程式語言都有其程式設計結構。C 程式的典型結構包括幾個部分。以下步驟展示了常規 C 程式的 C 結構:

包含標頭檔案

包含必要的標頭檔案,其中包含可在一個或多個原始碼檔案中使用的函式、常量和宏的宣告。一些常用的標頭檔案如下:

stdio.h - 提供輸入和輸出函式,如 printf 和 scanf。

#include <stdio.h>

stdlib.h - 包含涉及記憶體分配、rand 函式和其他實用程式函式的函式。

#include <stdlib.h>

math.h - 包括數學函式,如sqrtsincos等。

#include <math.h>

string.h - 包含用於操作字串的函式,例如strcpystrlen等。

#include <string.h>

ctype.h - 用於測試和對映字元的函式,如isalphaisdigit等。

#include <ctype.h>

stdbool.h - 定義布林資料型別以及truefalse值。

#include <stdbool.h>

time.h - 包含用於處理日期和時間的函式。

#include <time.h>

limits.h - 定義整數型別的各種實現特定限制。

#include <limits.h>

宏和常量

定義將在整個程式中使用的任何宏或常量。宏和常量是可選的。

示例

#include <stdio.h>
#define PI 3.14159
int main() {
   float radius = 5.0;
   float area = PI * radius * radius;

   printf("Area of the circle: %f\n", area);
   return 0;
}
輸出
Area of the circle: 78.539749

C 中的全域性宣告

全域性宣告是可選的

int globalVariable;
void sampleFunction();

宣告將在程式的不同部分使用的全域性變數和函式。請檢視以下示例

#include <stdio.h>

// Global variable declaration
int globalVariable;

int main() 
{
   // Rest of the program
   return 0;
}

主函式

每個 C 程式都必須有一個main函式。它是程式的入口點。請檢視以下示例

int main() {
   float radius = 5.0;
   float area = PI * radius * radius;

   printf("Area of the circle: %f\n", area);
   return 0;
}

C語言中的函式

根據需要定義其他函式。主函式可以呼叫這些函式。請檢視以下示例

#include <stdio.h>

// Global function declaration
void samplefunction();

int main() {
   // Programming statements
   return 0;
}

// Global function definition
void samplefunction () {
   // Function programming statements implementation
}

C 程式可以從 3 行到數百萬行不等,並且應寫入一個或多個副檔名為“.c”的文字檔案;例如,hello.c。您可以使用“vi”“vim”或任何其他文字編輯器將您的 C 程式寫入檔案。

本教程假設您知道如何編輯文字檔案以及如何在程式檔案中編寫原始碼。

廣告