我创建了一个包含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)条件来简单地打印所有值。
答案 0 :(得分:4)
您的哨兵必须是int
类型(或struct student
内的其他字段),例如:
s[10].roll_no = -1;
您的while
循环如下:
while(ptr->roll_no != -1)
{
...
ptr++;
}