[英]Accessing C arrays(int[], float[], etc..) using Objective-C runtime
[英]float arrays in objective C
我是否需要在目标C中空终止基本浮点数组?
我有一个基本的浮点数组:
float data[] = {0.5, 0.1, 1};
当我做一个sizeof(数据)时,我得到“12”。
你不需要null来终止它来创建一个,不。 通常,采用float[]
方法也会使用size参数来指示有多少元素。
你得到sizeof(data) = 12
因为你的架构float
是4字节,其中有3个。
sizeof
返回参数占用的内存量(以字节为单位)。 在您的情况下,每个float
占用4个字节,因此4 * 3 = 12。
正如Hot Licks在mattjgalloway的回答评论中所说,没有一种标准的方法来检索C数组中的元素数量。
使用size = sizeof(data) / sizeof(float)
可以正常工作,但是使用这种方法时必须小心,因为如果将数组作为参数传递,它将无法工作。
一种常见的方法是将大小存储在变量中并将其用作for循环的上限(通常是期望数组具有附加参数以获取数组大小的函数)。
使用以null结尾的数组非常有用,因为您可以遍历数组并在i
-esim元素为null时停止(这是strcmp
等方法的方法)。
float
类型的值永远不能为null,因此无法使用null终止float
类型的数组。 首先,任何基本类型的变量总是有一个数值,并且各种空常量(在Objective-C中为nil
, Nil
,NULL和'\\0'
)的文字值为0
,这显然是一个有效的值。 float
范围。
所以,即使您可以在没有警告的情况下编译以下行,
float x = NULL;
......它会产生与此相同的后果:
float x = 0;
在float
类型的数组中插入null常量将与插入0.0
或任何其他常量零值无法区分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.