c - 如何区分初始化结构和未初始化结构?

标签 c struct initialization

我正在通过套接字发送学生记录。数据库向客户端发送列表中学生的数量,然后一次发送一个记录。我遇到的问题是,当没有学生时,列表以未初始化的记录开头。我想在记录中添加一个新字段,说明它们是新记录还是已填充,但这意味着要更改很多代码。

有没有一种简单的方法可以检查一条记录是否已被填满。以下是学生记录的结构。

typedef struct student{
    char lname[10], initial, fname[10];
    unsigned long SID;
    float GPA;
} SREC;

typedef struct node{
    SREC student;
    int deleted;
    struct node *left;
    struct node *right;
} NODE;

这是对起始空节点所做的初始化。

NODE *lname = calloc( 1, sizeof(NODE) );
lname->left = NULL;
lname->right = NULL;
lname->deleted = 0;

最佳答案

  1. 如果您系统上的空指针具有全零位模式(而且它可能确实如此),则在 calloc 之后您不需要任何该代码。

  2. 您可以通过查看任何不具有合法全零值的字段来跟踪记录是否已初始化。也许是 lnameSID 字段?

关于c - 如何区分初始化结构和未初始化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223501/

相关文章:

c - 请检查我的代码。不会返回正确的值

c - 破译 qwert 密码

c++ - 如何将结构传递给新线程 (C++)

python - 如何使用 ctypes 从 Python 创建 C 结构体?

Golang,更改自定义客户端 MaxIdleConnsPerHost 的结构

c - 如何跳过一个值并转到 fscanf() 中的下一个值,以及如何 fscanf() 特定类型

c - libcurl smtp 消息发送

loops - 在 Jmeter 中更改循环中的变量

c++ - 默认初始化与值初始化

c++ - 带大括号的结构初始化/赋值