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

《從零開始學 Swift》Day 71 —— Swift 與 C/C++ 混編:數據類型映射完整表

     編輯:關於C++

Swift 無法直接使用 C 類型,Apple 提供了對應的 Swift 類型封裝。本文整理基本類型映射表與指針類型映射表,並演示構造方法與互轉技巧。

一、C 基本數據類型映射表

C 類型Swift 類型構造示例
signed charCChar / Int8CChar(65)
unsigned charCUnsignedChar / UInt8CUnsignedChar(255)
shortCShort / Int16CShort(32767)
unsigned shortCUnsignedShort / UInt16CUnsignedShort(65535)
intCInt / Int32CInt(42)
unsigned intCUnsignedInt / UInt32CUnsignedInt(42)
longCLong / Int (64位)CLong(1000)
unsigned longCUnsignedLong / UIntCUnsignedLong(1000)
long longCLongLong / Int64CLongLong(1_000_000)
unsigned long longCUnsignedLongLong / UInt64CUnsignedLongLong(1_000_000)
floatCFloat / Float32CFloat(3.14)
doubleCDouble / Float64CDouble(3.14159)
boolCBoolCBool(true)

二、構造與轉換示例

let swiftInt = 80
let cInt = CInt(swiftInt)           // Int -> CInt
let cUChar = CUnsignedChar(swiftInt) // Int -> unsigned char
let cUInt = CUnsignedInt(swiftInt)   // Int -> unsigned int

// 反向:C 類型 -> Swift 原生
let backToInt = Int(cInt)
let backToUInt = UInt(cUInt)

三、C 指針類型映射表

C 指針Swift 類型說明
const T*UnsafePointer<T>不可變指針,需手動管理內存
T*UnsafeMutablePointer<T>可變指針,可 alloc/init/deinit/dealloc
T** / 複雜指針AutoreleasingUnsafeMutablePointer<T>自動釋放指針,用於 in-out 參數
void* / 無法表示OpaquePointer不透明指針,類型擦除

四、指針類型核心操作

4.1 UnsafePointer<T>(常量指針)

  • 構造:init(_ other: OpaquePointer)、init(_ from: UnsafeMutablePointer<T>)、init(_ from: UnsafePointer<T>)
  • 屬性:pointee (Swift 3+ 替代 memory) 只讀訪問值
  • 方法:successor() / predecessor() 移動指針

4.2 UnsafeMutablePointer<T>(可變指針)

  • 分配:allocate(capacity: Int) → initialize(to: T) / initialize(repeating: T, count: Int)
  • 銷毀:deinitialize(count: Int) → deallocate()(成對調用)
  • 訪問:下標 ptr[i] 或 pointee

4.3 AutoreleasingUnsafeMutablePointer<T>

函數參數標記為此類型時,調用者傳入的變量會被複製到無所有權緩衝區,函數返回時寫回。常用於 C API 的雙重指針輸出參數。

五、實戰建議

  1. 優先用 Swift 原生類型,只在調用 C/Objective-C API 邊界處轉換。
  2. 指針操作標記 unsafe,集中封裝在工具層,業務代碼不直接接觸。
  3. 內存管理遵循「誰分配誰釋放」,避免跨語言邊界洩漏。

基本類型映射表 指針類型映射表

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