# C Interoperability

Use imported C types or call C variadic functions.

## Topics

### C Pointers

- ``Swift/OpaquePointer``
- ``Swift/AutoreleasingUnsafeMutablePointer``

### C Variadic Functions

- ``Swift/withVaList(_:_:)``
- ``Swift/CVaListPointer``
- ``Swift/CVarArg``
- ``Swift/getVaList(_:)``

### Pointers to Values

Access a pointer to a variable in memory for explicit passing to C functions.

- ``Swift/withUnsafePointer(to:_:)-9fjn6``
- ``Swift/withUnsafePointer(to:_:)-35wrn``
- ``Swift/withUnsafeMutablePointer(to:_:)``
- ``Swift/withUnsafeBytes(of:_:)-5zxtl``
- ``Swift/withUnsafeBytes(of:_:)-5gesg``
- ``Swift/withUnsafeMutableBytes(of:_:)``

### Aliases for Imported C Types

- ``Swift/CBool``
- ``Swift/CChar``
- ``Swift/CChar8``
- ``Swift/CChar16``
- ``Swift/CChar32``
- ``Swift/CDouble``
- ``Swift/CLongDouble``
- ``Swift/CFloat``
- ``Swift/CFloat16``
- ``Swift/CInt``
- ``Swift/CLong``
- ``Swift/CLongLong``
- ``Swift/CShort``
- ``Swift/CSignedChar``
- ``Swift/CUnsignedChar``
- ``Swift/CUnsignedInt``
- ``Swift/CUnsignedLong``
- ``Swift/CUnsignedLongLong``
- ``Swift/CUnsignedShort``
- ``Swift/CWideChar``
