JoB*_*324 1 c arrays pointers objective-c
我已经在objective-c中编程了一段时间,但遗憾的是我从未深入研究过C和内存指针,尽管我对它们有一些基本的了解.我正在使用一系列CLLocationCoordinate2D结构,我正在试图找出如何附加到数组.首先,我得到了
NSString *aString; //a bunch of coordinates
CLLocationCoordinate2d *coordinates;
int length;
doSomethingCool(aString, &coordinates, &length);
Run Code Online (Sandbox Code Playgroud)
在我做了一些很酷的事情之后,我想把它保存在一个类变量中.如果我只是做类似的事情
points = newPoints
Run Code Online (Sandbox Code Playgroud)
points包含适当的内容.但是,如果我尝试做这样的事情:
points = malloc(sizeof(CLLocationCoordinate2D) * length);
points[0] = *newPoints;
Run Code Online (Sandbox Code Playgroud)
点与来自不同内容结束newPoints.
最终,我的目标是能够追加到分根据长度,但我不会是能够做到这一点,如果我不能得到上面的代码工作.我究竟做错了什么?
您的代码只是将第一个值复制newPoints
到第一个值points
(*newPoints
相当于newPoints[0]
).
一种情况是创建一个新数组,复制所有值,切换数组,以及free()旧数组.例如:
int* newvals = malloc(sizeof(int) * newcount);
memcpy(newvals, vals, sizeof(int) * oldcount);
free(vals);
vals = newvals;
Run Code Online (Sandbox Code Playgroud)
你也可以使用realloc
- 它的行为与上面类似(虽然它可能会失败!),但有时可能更有效率.
请注意,您无法以安全和便携的方式更改基础指针的大小.您需要使用新指针更新实例("class")变量.
归档时间: |
|
查看次数: |
1270 次 |
最近记录: |