iOS 開發的基石是 Objective-C,而 OC 的基石是 C 語言。本文系統梳理 iOS 開發者必須掌握的 C 語言核心知識:運行流程、數據類型、運算符、常用函數、模塊化編程。
main.c,編寫代碼點擊 ▶️ 運行源文件 (.c) ↓ 預處理 (#include, #define) 預處理後源文件 (.i) ↓ 編譯 (詞法/語法/語義分析、優化) 目標文件 (.o) — 二進制,含符號表,不可直接運行 ↓ 鏈接 (符號解析、地址重定位、合併庫代碼) 可執行文件 — 可直接加載運行
多文件項目:各 .c 獨立編譯為 .o,鏈接時合併。修改一個 .c 只需重編該文件,增量構建極快。
// Message.h — 僅聲明
void showMessage(void);
// Message.c — 實現
#include <stdio.h>
void showMessage(void) { printf("Hello, World!\n"); }
// main.c — 使用
#include "Message.h"
int main(void) { showMessage(); return 0; }
關鍵規則:
#include <sys.h>:系統頭文件,搜索標準路徑#include "user.h":用戶頭文件,先搜索當前目錄#include "Message.c":會導致重複定義鏈接錯誤| 類別 | 類型 | 大小(64位) | 格式符 | 備註 |
|---|---|---|---|---|
| 整數 | char | 1 | %c/%hhd | 最小單位,可存 ASCII |
| short | 2 | %hd | ||
| int | 4 | %d | 默認整型 | |
| long long | 8 | %lld | C99 | |
| 浮點 | float | 4 | %f | ~7位有效數字 |
| double | 8 | %lf | ~15位,默認浮點 | |
| 指針 | void* | 8 | %p | 64位系統 |
signed/unsigned:符號位,unsigned char 0~255short/long:長度,long double 擴展精度const:只讀,編譯器優化、防誤修改volatile:防優化,硬件寄存器/多線程共享變量必加+ - * / %,整數除法截斷向零== != > < >= <=,結果為 0/1 (int)&& || !,短路求值,非零即真& | ^ ~ << >>,底層開發核心= += -= *= /= %= <<= >>= &= ^= |=sizeof (編譯期)、++ --、?:、, (逗號表達式,值為最後一項)if (c) 等價 if (c != 0),任意非零為真a = (b=3, c=4, d=5) → a=5 (逗號表達式)sizeof 是運算符非函數,sizeof int 需括號 sizeof(int)
int a = 16; float b = 79.3f;
printf("[%4d]\n", a); // [ 16] 右對齊寬度4
printf("[%-4d]\n", a); // [16 ] 左對齊
printf("[%10f]\n", b); // [ 79.300000]
printf("[%.2f]\n", b); // [79.30] 2位小數
printf("[%4.2f]\n", b); // [79.30]
int a, b, c;
scanf("%d,%d,%d", &a, &b, &c); // 輸入: 1,2,3 + 回車
// 格式符必須匹配,& 取地址不可少
static int x = 0; 生命周期全程,初始化一次NS_OPTIONS、UIViewAutoresizing 等選項集合
4. 理解編譯/鏈接/運行時區別 → 排查 "Undefined symbols"、"Duplicate symbols"、Crash 符號化
5. 養成 const、static、inline 正確使用習慣 → 寫出高質量 OC/Swift 代碼
C 語言不大但很深。iOS 開發者不必精通系統編程每個角落,但指針、內存、類型、編譯鏈接、標準庫這五大支柱必須牢固。建議:
C 語言功力直接決定 iOS 開發的上限。打好地基,才能構建高樓。