【发布时间】:2014-11-12 08:11:12
【问题描述】:
我有以下结构
typedef struct
{
char data1[10];
char data2[10];
AnotherStruct stData;
}MyData;
由于某种原因,实现者选择不将 stData 作为指针,所以我不得不忍受。 我的问题是如何检查 stData 成员是否为空?因为如果它是空的,我需要跳过代码中的某些内容。
感谢任何帮助
【问题讨论】:
-
一般你不能。但是
AnotherStruct可以有一个名为empty的字段,您可以检查一下。 -
Null-ness 仅适用于指针。恐怕您正在对源自 Java 甚至 C# 背景的 C++ 做出假设,但您将不得不忘记这些。顺便说一句:C 和 C++ 也是不同的语言,因此对一种语言的回答通常不适用于另一种语言,尽管这种情况是一个例外。
-
视情况而定。它不是指针,因此不能为“null”。它可以是零填充的,但这并不意味着它也是空的,它只意味着它被零填充。我相信
AnotherStruct有一些属性可以用来检查它的有效性,如果不知道应该如何使用这个结构,就无法告诉你它是什么。 -
当且仅当零填充结构表示空时,您可以使用“memcmp”,但正如其他评论者所建议的那样,应该有一种方法来检查结构是否有效/非空。
-
您需要指定结构在“空”时的外观 - C/C++ 中的结构永远不会为空,它只是填充了或多或少定义明确的东西由您或设计它的人来决定解释。
标签: c++ c data-structures