gpt4 book ai didi

objective-c - 在 Objective-C 中初始化结构数组

转载 作者:太空狗 更新时间:2023-10-30 03:59:00 27 4
gpt4 key购买 nike

我已经阅读了一段时间,但我不确定我是否找到了一个好的答案。

我正在尝试设置一个包含 92 个结构的数组。它是固定长度并且不会改变,因为它实际上是一个查找表。我认为最好的方法是先使用 calloc 分配内存,然后加载数据。

但经过一些阅读后我看到很多人直接分配内存而没有像这样的 callocmalloc

 myStruct myData[92] = { {1,2}, {3,4}, ....};

我的第一个问题是动态分配内存是否更好?我的理解是这是一个更好的解决方案。特别是如果数据不一定会一直被使用。

我的第二个问题是关于初始化数据。我读过我可以使用 ... = {....}; 初始化一个结构,但编译器不接受它。

这是我目前的代码:

typedef struct {
int a;
int b;
} myStruct;

@implementation MyClass

static myStruct *myData;

-(id) init {
// ...

myData = (myStruct *) calloc(92, sizeof(myStruct));
myData[0] = {1,2}; // <=== Error ! Compiler says "Expected expression!"

// ...

最佳答案

您的代码看起来像 Objective-C,对吗?

如果您知道一个数组中有多少个元素(并且它是一个健全的处理器和操作系统),那么显式定义它总是更简单。

无论何时动态分配数组,都需要防止出现错误,这会使代码更难理解。

如果它真的是一个查找表,并且所有的值在编译时都是已知的,你可以直接初始化它:

struct {
int a;
int b;
} myStructDate[92] = { {1, 2}, {3, 4}, ... {181, 182}, {183, 184} };

关于objective-c - 在 Objective-C 中初始化结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com