我有一个C程序如下结构我想转换为斯威夫特:转换C结构斯威夫特结构
struct record
{ int r;
int c;
int val;
struct record *next;
};
雨燕不会允许在其内部的指针(引用)的结构。 C代码的工作方式允许每条记录包含一个指向下一条记录的指针,以便通过记录轻松进行迭代。
有没有办法强制这个工作使用UnsafeMutablePointer什么的?
谢谢你的任何建议!
我有一个C程序如下结构我想转换为斯威夫特:转换C结构斯威夫特结构
struct record
{ int r;
int c;
int val;
struct record *next;
};
雨燕不会允许在其内部的指针(引用)的结构。 C代码的工作方式允许每条记录包含一个指向下一条记录的指针,以便通过记录轻松进行迭代。
有没有办法强制这个工作使用UnsafeMutablePointer什么的?
谢谢你的任何建议!
Swift不会允许指针(引用)到自身内部的结构。
没错。然而,它允许一个可选class
参考:
class record {
var r : Int = 0
var c : Int = 0
var val : Int = 0
var next : record? = nil
};
这就是你所需要的:因为next
指针允许为NULL
在C,你应该能够将其设置为nil
斯威夫特。
结构体或类? –
@ Mr.UB我会用班级。 'struct'需要遍布各处的可变性标记,使得物体难以使用。 – dasblinkenlight
如果这个答案是一个结构体,那么它是不是真的会制作下一个记录的副本,而不仅仅是对它的引用? –
使它成为'class'类型... –
@Martin R说什么。从Swift文档:“结构总是在您的代码中传递时被复制...” –
您也可以使用“间接枚举”,请参阅https://airspeedvelocity.net/2015/07/26/linked -lists-enums-value-types-and-identity /例如。 –