在其字段中声明指向结构的指针

时间:2016-03-09 20:57:32

标签: c pointers struct typedef

我需要输入结构指针,然后在其字段中使用新类型。

我的意思是代替:

public String getElement() //Doesn't have to be a String
{
    return someString;
}

我需要在struct app { char *data; struct app *ptr; } 某处输入typedef,然后使用它:

typedef app* appPtr;

我怎么能这样做?

PS:我需要同时使用struct app { char *data; appPtr ptr; } & appPtr种类型。

1 个答案:

答案 0 :(得分:2)

可以使用struct前向声明来完成。这是一个示例代码,它实现了这个概念:

#include <stdio.h>

struct app;
typedef struct app* appPtr;

struct app 
{
   char *data;
   appPtr ptr;
};

int main(void)
{
   struct app myApp = { "myApp", NULL };

   printf("%s, %p\n", myApp.data, (void *) myApp.ptr);
   return 0;
}

但是,正如问题评论中所提到的,我不建议将其作为正确的做法,因为它会混淆代码,并且事情会因更多层次的间接而变得混乱。