gpt4 book ai didi

objective-c - 如何附加到 C 数组的末尾

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:30 25 4
gpt4 key购买 nike

我已经使用 objective-c 编程了一段时间,但遗憾的是我从未深入研究过 C 和内存指针,尽管我对它们有初步的了解。我正在处理一组 CLLocationCoordinate2D 结构,我正在尝试弄清楚如何附加到该数组。首先,我得到了

NSString *aString; //a bunch of coordinates
CLLocationCoordinate2d *coordinates;
int length;

doSomethingCool(aString, &coordinates, &length);

在我做了一些很酷的事情之后,我想将它保存在一个类变量中。如果我只是做类似的事情

points = newPoints

points 包含适当的内容。但是,如果我尝试做这样的事情:

points = malloc(sizeof(CLLocationCoordinate2D) * length);
points[0] = *newPoints;

points 的内容与 newPoints 不同。

最终我的目标是能够根据 length 附加到 points,但如果我不能得到,我将无法做到这一点上面的代码可以工作。我做错了什么?

最佳答案

您的代码只是将 newPoints 的第一个值复制到 points 的第一个值中(*newPoints 等同于 newPoints[ 0]).

一种情况是创建一个新数组,复制所有值,切换数组,然后 free() 旧数组。例如:

int* newvals = malloc(sizeof(int) * newcount);
memcpy(newvals, vals, sizeof(int) * oldcount);
free(vals);
vals = newvals;

您还可以使用 realloc - 它的行为与上面的类似(尽管它可能会失败!),但有时可能更有效。

请注意,您根本无法以安全且可移植的方式更改底层指针的大小。您将需要使用新指针更新您的实例(“类”)变量。

关于objective-c - 如何附加到 C 数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6482157/

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