如何解决从Objective-c到双数组C代码函数参数
嗨,我在从Objective-c向C代码传递参数double数组时遇到问题 以某种方式接收到C代码时,我的数据不再是数组。 你能指出我的代码有什么问题吗?
很抱歉有一个新手问题,我还是C代码新手
解决方法
都是一样的。在Objective-C端,它表示为一个double数组,在C端,它表示为double的指针,这是相同的。请注意,数组中的第一个值与指针指向的第一个值如何相同。
您可以使用例如
double value = * ( data + i );
从数组中获取指向索引i
的值。
此外,按如下所示更改C函数的参数。
int classify_data( double * data,int size )
并像现在一样传递数据以及数组的大小。
编辑
下面的代码有望阐明这种相似性。
double data[] = { 1.0,22222.0,3.0 };
double * p = data;
// All print the same 22222
NSLog(@"Some values %f %f %f %f",* ( data + 1 ),data[ 1 ],* ( p + 1 ),p[ 1 ] );
如果使用指针,则可以使用指针算法进行循环,该算法确实非常好且高效,但这本身就是一个话题。指针和数组可以如代码中所示互换使用,因为在C中,它们是相同的。
编辑2 如何高效地循环双精度数组的示例。
double sum ( double * data,int n )
{
double sum = 0;
while ( n )
{
// The more traditional way of doing it
sum += * data;
data ++;
// Here you can even write a one-liner as below which is extremely efficient
// This line below is a real nice example of how powerful pointer arithmetic is ...
// sum += * ( data ++ );
n --;
}
return sum;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。