我需要创建一个结构,该结构的属性是指向同一结构的指针。
我正在尝试此解决方案,但不起作用:
typedef struct
{
int number;
void *other;
}mystruct;
extern mystruct first[];
extern mystruct second[];
mystruct first[] = {{1,NULL},{2,second}};
mystruct second[] = {{3,NULL},{4,first}};
mystruct *wrap;
wrap = (mystruct *)first[1].other;
int main(void){
printf("%d\n",first[0].number);
printf("%d\n",second[0].number);
printf("%d\n",wrap[1].number);
}
有人可以帮助我吗? 最好的问候和谢谢
答案 0 :(得分:2)
我不确定,但是您是要寻找linked-lists还是说Self Referential structure
struct list {
int something;
struct list *use_this_to_point_to_similar_type;
};
这里是另一个很好的参考书what-is-self-referencing-structure-in-c
只是一点点简化,在这里到处移动一些指令,下面的代码是 可能是您期望实现的目标
#include<stdio.h>
struct mystruct
{
int number;
struct mystruct *other;
};
struct mystruct first[] = {{1,NULL},{2,NULL}};
struct mystruct second[] = {{3,NULL},{4,NULL}};
struct mystruct *wrap;
int main(void)
{
first[1].other = second;
second[1].other = first;
wrap = first[1].other;
printf("%d\n",first[0].number);
printf("%d\n",second[0].number);
printf("%d\n",wrap[1].number);
return 0;
}
答案 1 :(得分:1)
在ch
中,您可以在使用结构并将其ch
命名之前命名该结构:
C
答案 2 :(得分:0)
您的第一个和第二个不需要在外部,因为它们是在程序中分配的。您可以声明和初始化。 var在主体之前。但其余的必须移至主要功能:
int main(void){
wrap = (first[1].other);
printf("%d\n",first[0].number);
printf("%d\n",first[1].number);
printf("%d\n",second[0].number);
printf("%d\n",wrap[1].number);
return 0;}