C 如何在结构数组末尾提供Sentinel值

C 如何在结构数组末尾提供Sentinel值,c,structure,sentinel,C,Structure,Sentinel,我已经创建了一个由10个元素组成的结构(第11个元素代表sentinel值)和一个结构指针,将第一个结构元素的地址分配给它 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 {

我已经创建了一个由10个元素组成的结构(第11个元素代表sentinel值)和一个结构指针,将第一个结构元素的地址分配给它

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位的哨兵值。
当用户输入新的结构元素时,sentinel值向前移动等
因此,我不能使用(int i<10)条件简单地打印所有值。

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

s[10].roll_no = -1;
您的
while
循环如下所示:

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

Thnx用于解决方案。尽管只是出于好奇,但它们是否还有其他有效的方法来实现同样的目标,而不需要占用额外的空间来构建一个结构?@BrainDead一个单独链接的列表将是一个更好的解决方案。