如何在Structure Array的末尾提供Sentinel值

时间:2014-07-13 07:43:38

标签: 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++;
}  

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

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

1 个答案:

答案 0 :(得分:4)

您的哨兵必须是int类型(或struct student内的其他字段),例如:

s[10].roll_no = -1;

您的while循环如下:

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