分かったこと。
1. swiftでC言語の構造体を別変数へ代入すると全ての要素が代入される。つまりC言語と同じ動作をする。
2. C言語の構造体内のポインタにはC言語側で入れたアドレス値が入っていてswift側でそのまま、UnsafeMutablePointerとして扱える。
3. C言語の構造体内の固定長配列はswiftではタプルとして扱われる。
import Foundation var some:Some = ddd().something() var some1:Some = some; print("\(some1.one)") print("\(some1.two)") var p:UnsafeMutablePointer<Int32> = some1.two print("\(some1.three.0)") print("\(some1.three.1)") //p[0x1002ca530] //1 //0x00000001002ca530 //48 //49
#import <Foundation/Foundation.h> #include <stdint.h> typedef struct { int32_t one; int32_t *two; char three[2]; } Some; @interface ddd : NSObject - (Some)something; @end static int two = 2; @implementation ddd - (Some)something { Some some; some.one = 1; some.two = &two; printf("p[%p]\n", &two); some.three[0] = '0'; some.three[1] = '1'; return some; } @end