首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

iOS 開發基礎:C 語言核心知識體系(數據類型、運算符、函數、內存模型)

     編輯:關於C語言

iOS 開發基礎:C 語言核心知識體系(數據類型、運算符、函數、內存模型)

iOS 開發的基石是 Objective-C,而 OC 的基石是 C 語言。本文系統梳理 iOS 開發者必須掌握的 C 語言核心知識:運行流程、數據類型、運算符、常用函數、模塊化編程。

一、Xcode 中運行 C 程序

  1. File → New → Project → macOS → Command Line Tool
  2. Language 選 C
  3. 自動生成 main.c,編寫代碼點擊 ▶️ 運行

二、C 程序運行流程:編譯 + 鏈接

源文件 (.c) 
  ↓ 預處理 (#include, #define)
預處理後源文件 (.i)
  ↓ 編譯 (詞法/語法/語義分析、優化)
目標文件 (.o) — 二進制,含符號表,不可直接運行
  ↓ 鏈接 (符號解析、地址重定位、合併庫代碼)
可執行文件 — 可直接加載運行

多文件項目:各 .c 獨立編譯為 .o,鏈接時合併。修改一個 .c 只需重編該文件,增量構建極快。

三、模塊化編程:.h + .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":會導致重複定義鏈接錯誤
  • .h 只放聲明,.c 放實現,主文件包含 .h

四、數據類型體系

類別類型大小(64位)格式符備註
整數char1%c/%hhd最小單位,可存 ASCII
short2%hd
int4%d默認整型
long long8%lldC99
浮點float4%f~7位有效數字
double8%lf~15位,默認浮點
指針void*8%p64位系統

類型修飾符

  • signed/unsigned:符號位,unsigned char 0~255
  • short/long:長度,long double 擴展精度
  • const:只讀,編譯器優化、防誤修改
  • volatile:防優化,硬件寄存器/多線程共享變量必加

五、運算符重點

  1. 算術:+ - * / %,整數除法截斷向零
  2. 關係:== != > < >= <=,結果為 0/1 (int)
  3. 邏輯:&& || !,短路求值,非零即真
  4. 位運算:& | ^ ~ << >>,底層開發核心
  5. 賦值:= += -= *= /= %= <<= >>= &= ^= |=
  6. 其他:sizeof (編譯期)、++ --、?:、, (逗號表達式,值為最後一項)

關鍵細節

  • if (c) 等價 if (c != 0),任意非零為真
  • a = (b=3, c=4, d=5) → a=5 (逗號表達式)
  • sizeof 是運算符非函數,sizeof int 需括號 sizeof(int)

六、常用庫函數

printf 格式化輸出


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]

scanf 格式化輸入


int a, b, c;
scanf("%d,%d,%d", &a, &b, &c);  // 輸入: 1,2,3 + 回車
// 格式符必須匹配,& 取地址不可少

七、函數與作用域

  • 聲明在前,定義在後,或放 .h/.c 分離
  • 參數傳遞:只有值傳遞,需修改實參傳指針
  • 遞歸需有基礎情況,防止棧溢出
  • 靜態局部變量:static int x = 0; 生命周期全程,初始化一次

八、iOS 開發銜接建議

  1. 精通指針、內存佈局、結構體對齊 → 理解 OC 對象模型 (isa、ivar、方法列表)
  2. 2. 掌握函數指針、回調模式 → 理解 Block、GCD、RunLoop 回調 3. 熟悉位運算、掩碼 → 理解 NS_OPTIONS、UIViewAutoresizing 等選項集合 4. 理解編譯/鏈接/運行時區別 → 排查 "Undefined symbols"、"Duplicate symbols"、Crash 符號化 5. 養成 const、static、inline 正確使用習慣 → 寫出高質量 OC/Swift 代碼

九、總結

C 語言不大但很深。iOS 開發者不必精通系統編程每個角落,但指針、內存、類型、編譯鏈接、標準庫這五大支柱必須牢固。建議:

  • 《C Primer Plus》入門參考
  • 《C 專家編程》進階避坑
  • 《C 缺陷與陷阱》案頭翻閱
  • 閱讀 Apple 開源代碼 觀察實戰用法

C 語言功力直接決定 iOS 開發的上限。打好地基,才能構建高樓。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved