Structs: value types (copied on assignment), stack allocated, no inheritance, memberwise initializer. Classes: reference types (shared), heap allocated, support inheritance, deinit available. Use structs for: data models, small values, when you want copies. Use classes for: shared state, inheritance needs, Objective-C interop. Swift favors structs (safer, faster).