NULL替代C语言99标准中的double

时间:2019-02-11 21:55:40

标签: c null c99

我正在处理带有99标准的C语言标记的循环双向链接列表。我允许用于类的标头仅为stdio.h,stdlib.h和assert.h。

哨兵是一个结构,并且这些结构具有一个value数据成员,该成员是double值。我想知道是否可以用双精度代替NULL?似乎NULL可用于整数数据类型,但不能用于双精度。我尝试使用Nan和NAN,但是编译器不接受这些。我考虑使用任意数字,但想知道在这种特殊情况下是否有NULL的特定替代品?

1 个答案:

答案 0 :(得分:3)

NaN是适合您所寻求目的的值。 C提供了符号NAN,可用于表示NaN。但是,NAN中提供了<math.h>的定义,该定义不在允许使用的标题中。相反,在包含double NaN = strtod("NAN", 0);之后,您可以通过<stdlib.h>获得NaN。 (提醒请记入chux。)

分配似乎要求您在double中使用哨兵值而不授予您访问<math.h>的权限,这似乎很奇怪。您可能应该在结构的指针成员中使用空指针,而不要尝试使用double来标记列表的末尾。或者,如果不是空指针,则将另一个成员添加到结构中以标记结束。或通过记住您在列表中输入的位置来确定结束位置-当您遍历循环列表回到起点时,您就完全遍历了列表。