C 如何在结构数组末尾提供Sentinel值
我已经创建了一个由10个元素组成的结构(第11个元素代表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 {
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一个单独链接的列表将是一个更好的解决方案。