我创建了一个包含 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/