在循环中创建结构而不命名它们

时间:2017-03-30 08:15:14

标签: c struct

我想说我想在循环中创建结构。我不想在每个循环中更改结构变量的值,我想创建新的。然而,从我所学到的东西,直到知道我必须命名我所做的每一个新结构。有没有办法在不命名结构的情况下做到这一点?

更具体地说,我可以在每个结构中指向下一个指针吗?

我想要做的是BST,我的结构是针对我添加到树中的每个新节点。这是我看到人们如何使用struct进行的。如果我没有命名,我该如何添加节点?我肯定有一些空白。

3 个答案:

答案 0 :(得分:1)

您可以在循环中多次使用struct变量,方法是使用malloc()为每次迭代分配内存

#include<stdio.h>
#include<stdlib.h>
struct structname
{
int a;
struct structname* b;  //points to next struct
};
int main()
{
struct structname* ptr[10]; //
for(int i=0; i<10; i++)
    {
     ptr[i] = (struct structname*)malloc(sizeof(struct structname));
     ptr[i]->a=1;
     ptr[i]->b=NULL; //point to next struct instead of NULL
    }
}

但是,如果您事先知道struct的数量,则可以创建一个数组来保存struct s

#include<stdio.h>
#include<stdlib.h>
struct structname
{
int a;
};
int main()
{
 struct structname array[10];
for(int i=0; i<10; i++)
    {
     array[i].a = 1; //input number here
    //no need of pointing to next struct as its already in an array
     }
}

答案 1 :(得分:0)

如果我理解你的问题,答案是否定的,你不能宣布一个没有名字的结构。关于指向下一个结构成员的指针,您应该在这里阅读有关C中列表和双链表的更多信息http://www.learn-c.org/en/Linked_lists

答案 2 :(得分:0)

标识符规则

  1. Indetifier只能包含字母数字字符(a-z,A-Z,0-9)和下划线(_)。
  2. 标识符的第一个字符只能包含字母(a-z,A-Z)或下划线(_)。
  3. 标识符在C中也区分大小写。例如,名称和名称是C中的两个不同标识符。
  4. 不允许将关键字用作标识符。
  5. 不允许在标识符中使用分号,句号,空格,斜线或逗号等特殊字符。
  6. 所以,要回答你的问题,你不能在没有识别它们的情况下创建新的结构,即使你能够,你会用什么来引用它? 如果没有任何东西指向它,它只是在内存上占用空间

相关问题