繁体   English   中英

目标C中的浮点数组

[英]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中为nilNil ,NULL和'\\0' )的文字值为0 ,这显然是一个有效的值。 float范围。

所以,即使您可以在没有警告的情况下编译以下行,

 float x = NULL;

......它会产生与此相同的后果:

float x = 0;

float类型的数组中插入null常量将与插入0.0或任何其他常量零值无法区分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM