【程式語言】C語言完整基礎介紹|自學之路#1

C語言是什麼?是可以拿來溝通的語言嗎?

本篇文章要來介紹在程式設計領域中相當重要的語言之一 – C語言

如果你唸的是資工系或是想要把程式設計的基礎打穩,那麼Hani推薦你一定要將C語言的基礎打穩,這樣當哪一天需要學習新的語言時,相信我,你一定能夠得心應手!

想要了解C語言的各位,讓我們繼續看下去吧!

C語言的由來

C語言是一種程序式的語言,最初是為了要移植跟開發 UNIX作業系統,由 Ken ThompsonDennis Ritchie(兩位大師都是出自著名的貝爾實驗室),在1972年基於B語言的基礎開發而成。

C語言的主要用途是?

C語言主要就是為了設計作業系統而開發的。

C語言的特色

  • 可移植性高
  • 32個簡單的保留字 & 簡潔的coding style
  • 為編譯式語言,程式的執行效率較直譯式語言來的更好
  • 相對於其他更高階的程式語言,C語言可以直接存取和操作記憶體 -> 就是利用指標做到的啦!

而有許多後來的程式語言都多多少少有從C語言身上借用了一些語法&功能。

像是java、PHP、JavaScript…等等,主要都是基於C語言去做開發。

這就是為什麼我會說,只要學會C語言,其他程式語言一定也能快速上手的原因!

C語言的程式架構 – 五大元素

C語言的程式架構

#1 標頭檔(header file)

在撰寫C語言的時候,第一件要做的事情就是載入標頭檔

標頭檔是一個類似擴充元件的.h檔案,裡面有著C語言相關的函式、巨集的定義,是一個可以被拿來在各個程式中共享的資源檔。

簡單來說就是,載入標頭檔之後,我們就可以使用C語言的函式了!

常用的標頭檔有:

  • stdio.h – 定義了主要的Input/Output函式。
  • stdlib.h – 定義了數值轉換、記憶體分配的函式。
  • string.h – 定義了所有處理字串的函式。
  • math.h – 定義了許多常用的數學函式。

在C語言中,載入標頭檔的語法是:

#include <xxxxxx.h>

#2 定義主程式(main function)

main function 是整個C程式的進入點(entry point),也就是說程式會從 main function 的第一行開始執行。

在C語言中,定義main fuction的語法是:

int main() 
{ }

#3 宣告變數(Variable)

每個變數都必須被宣告後才能使用,所以一定要記得宣告變數並初始化!

在C語言中,宣告變數的語法是:

int number;
float grade;
char name[20];

#4 程式主體(Body)

程式的主要動作都會撰寫在main function裡面。

可以是任何動作,例如:排序、搜尋、指定、印出…等等。

int main()
{
    int number;
    printf("%d\n, number);
.
.
}

#5 返回(Return)敘述

每個C語言函式的最後一個環節就是要返回function宣告時所定義的return value,而且要依據function所宣告的資料型態(Data type)去做return。

在C語言中,return的語法是:

int main()
{
    int number;
    printf("%d\n, number);
    return 0;
}

上述main function宣告時是用int,因此在這個例子中我們return的是0。

而這個值不一定要是0,return什麼值取決於函式的設計和目的,只要return的值符合函式宣告時所定義的資料型態就可以了!

第一支C程式 – Hello World!

在程式設計界有一個傳統,學習新的語言時,第一支程式就叫做 – Hello World。

#include <stdio.h>
int main(void)
{
    printf("Hello World");
    return 0;
}

Output:

Hello World

接下來,我們一行一行來分析

Line #1:[#include <stdio.h>]

在C語言中,以#開頭的語句,都會由預處理器(preprocessor)先行處理,而預處理器是由編譯器(compiler)所控制的。

換句話說就是,先藉由預處理器處理標頭檔之後,我們就可以使用標頭檔中所宣告的函式了!

上述的例子中,preprocessor會將stdio.h中預處理過後的程式碼複製到程式當中,這樣我們就可以使用stdio.h中宣告的所有函數,像是上面用到的printf()就是其中之一。

p.s. stdio -> standard input/output 的縮寫

Line #2:[int main(void)]

在C語言中,通常會從main function的第一行開始執行,也就是程式的進入點。

()中的void:表示main function不需任何參數。

main之前的int:表示main function中返回值的data type。

回傳返回值之後,function就會終止。

Line #3 and #6:[{ and }]

大括號定義出一個範圍,主要是用在函數和流程控制(像是:if…else)的語法當中,所有的function都必須以大括號開頭和結尾。

Line #4:[printf(“Hello World”);]

printf()是標準函式庫中用來印出東西到標準輸出的的函式。

結尾的;(分號)則是表示當行程式碼結束。

Line #5:[return 0;]

回傳返回值,程式終止!

回傳的值是0通常表示程式成功終止。

最重要的是,如何編譯C程式!

其實電腦很笨,看不懂我們寫的C程式,因為電腦的世界只有0 & 1 (binary)。

所以要執行C程式前,必須先透過編譯器將原始碼編譯成機器碼,才可以在電腦上執行!

Hani 常用的編譯器有下面幾種,推薦給大家使用:

#1:ideone

ideone是一個線上的編譯器和除錯工具,功能非常完善,可以編譯60多種語言。

如果只是要測試一小段程式碼,非常推薦直接用ideone,會方便很多!

使用的時候,記得要看看左下角的地方,是不是C語言喔~

C語言線上編譯器-ideone
ideone 介面

#2:CodeBlocks

CodeBlocks是一款具備圖形化介面的C/C++ IDE。

Hani非常推薦初學者使用,其中完整的debug支援能夠讓大家在剛開始學習C語言的時候,快速地從error message中找到問題點。

而且可以跨平台使用,不管是Mac/Windows/Linux通通有支援!

C語言IDE-CodeBlocks
CodeBlocks 介面

總結

上述就是C語言的完整基礎介紹,希望對正要入門的大家能夠有所幫助。

應該不會看完馬上棄坑逃走吧XDD

如果有任何問題都歡迎在下面留言告訴我哦!

By Hani

Leave a Reply