C語言屬於強類型、編譯型、過程式語言,常用於底層開發(作業系統、嵌入式、驅動),故稱為「中級語言」——兼具高級語言可讀性與低級語言硬件操控能力。
1. vim編寫源文件 hello.c 2. gcc hello.c 編譯鏈接 → 生成 a.out 3. ./a.out 運行程序
#include <stdio.h> // 預處理指令:包含標準輸入輸出頭文件
int main() { // 主函數:程序入口,返回類型int,無參數
#include "s.c" // 也可在函數內包含文件(不推薦)
printf("hello c\n"); // 語句:以分號結束
return 0; // 返回0表示正常退出
}
三大組成部分:
#開頭(#include、#define、#if等)返回類型 函數名(參數列表) { 函數體 };結束.i文件.s文件.o/.obj文件a.outGCC常用選項:
| 選項 | 作用 |
|---|---|
-c | 僅編譯不鏈接,生成.o文件 |
-o file | 指定輸出文件名(默認a.out) |
-std=c89/c99 | 指定C標準版本 |
-Wall | 開啟所有警告 |
-E | 僅預處理 |
-S | 生成匯編文件 |
#include <stdio.h>:僅搜索系統目錄(/usr/include/)#include "myheader.h":優先搜索當前目錄,再搜索系統目錄// 註釋內容(C99標準)/* 註釋內容 */ ⚠️ 不能嵌套註釋不參與編譯,是程序員溝通的重要方式。
myVariable)或下劃線命名(my_variable),見名知意變量 = 內存區域 + 名稱。使用前必須聲明類型,類型決定內存大小與解釋方式。
| 類型 | 關鍵字 | 典型大小 | 說明 |
|---|---|---|---|
| 字符 | char | 1字節 | 存儲ASCII碼值,如'A'=65 |
| 整型 | int | 4字節 | 含short/long/long long/unsigned/signed |
| 單精度浮點 | float | 4字節 | 7位有效數字,常量需f後綴 |
| 雙精度浮點 | double | 8字節 | 15-16位有效數字,默認浮點類型 |
| 格式符 | 含義 | 示例 |
|---|---|---|
%d/%i | 有符號十進制整數 | printf("%d", 42); |
%c | 單個字符 | printf("%c", 'A'); |
%s | 字符串 | printf("%s", "Hello"); |
%f | 浮點數(默認6位小數) | printf("%f", 3.14); |
%lf | double類型 | printf("%lf", 3.14159); |
%p | 指針地址 | printf("%p", &var); |
%x/%X | 十六進制 | printf("%x", 255); // ff |
%o | 八進制 | printf("%o", 9); // 11 |
%u | 無符號整數 | printf("%u", -1); // 4294967295 |
進階格式控制:%[標誌][寬度][.精度][長度]類型
-:左對齊(默認右對齊)0:寬度不足補0m.n:m最小寬度,n精度(小數位數)l:long修飾(%ld、%lf)h:short修飾(%hd)⚠️ 若需輸出%字符本身,用%%。
scanf("格式字符串", &變量1, &變量2, ...);
&var),否則無法修改變量值printf基本一致int a;
scanf("%d", &a); // 輸入整數存入a
printf("a=%d\n", a);
#include <stdio.h>
int main() {
int year, month, maxDay = 31;
printf("請輸入年月:");
scanf("%d%d", &year, &month);
if (month < 1 || month > 12) {
printf("月份非法\n");
return -1;
}
if (month == 4 || month == 6 || month == 9 || month == 11)
maxDay = 30;
else if (month == 2)
maxDay = 28 + (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
printf("%d年%d月有%d天\n", year, month, maxDay);
return 0;
}
掌握C語言基礎需重點理解:編譯流程、變量內存模型、類型系統、格式化I/O。建議在Linux環境下多動手實踐GCC編譯各階段輸出,觀察.i、.s、.o文件內容,深入理解源代碼如何變為可執行程序。