c - 如何在结构数组的末尾提供哨兵值

标签 c structure sentinel

我创建了一个包含 10 个元素的结构(标记值第 11 个)和一个结构指针,将第一个结构元素的地址分配给它。

struct student
{
    int roll_no;
};

struct student s[11];  
struct student *ptr = &s[0];    

s[10] = NULL;    // Sentinel value
while (*ptr != NULL )  // Sentinel Controlled Loop
{
    printf ("%d - ", ptr -> roll_no);

    ptr++;
}  

如何在结构数组的末尾提供标记值?

编辑:结构中的值正在动态变化,即我已经为 10 个结构创建了空间,但它们可能会在某个时刻只有 5 个元素出现。和标记值在第 6 位。
当用户输入一个新的结构元素时,标记值向前移动等 所以我不能使用 (int i < 10) 条件来简单地打印所有值。

最佳答案

你的 sentinel 必须是 int 类型(或 struct student 中的其他字段),例如:

s[10].roll_no = -1;

您的 while 循环将如下所示:

while(ptr->roll_no != -1)
{
    ...
    ptr++;
}

关于c - 如何在结构数组的末尾提供哨兵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720551/

相关文章:

c++通过网络发送结构

C++ 标记值的数据类型始终是 bool 值?对或错?

c - fscanf 不扫描空格后的行

c - 如何将一个 64 位数字拆分为八个 8 位值?

C 中无需库函数将字符串转换为整数

eclipse 中的 Android 项目文件夹

html - 全宽导航

C:引用编译器实现的数组元素是否特定?

redis - 我应该在 web 节点上运行 haproxy for db 和 redis sentinel 吗?

java - Java中的合并排序实现问题