C结构和指针

时间:2013-09-22 04:39:24

标签: c pointers struct

我正在读一本书并自学C.现在我正在尝试使用bitArray来查找特定数字下的素数#。默认情况下,本书给出了一个结构,一个函数以:

开头
typedef struct _seg {
   int  bits[256];
   struct _seg *next, *prev;
} seg;

*seg whichseg(int j){

}

然而,这个函数*seg whichseg(int j){在编译时给我一个错误。我想知道它应该是seg *和seg之后的明星吗?这个函数究竟意味着什么,它是否自动将j结构化为一个seg结构?

谢谢大家: - )

3 个答案:

答案 0 :(得分:1)

你应该在seg之后放*,seg*

截至目前,您的功能无效,通过进行上述更改,编译器仍然会抱怨说价值不会被贬低。

我假设你想把j值放在你的节点中,我把它放在位置为零的位数。

seg* whichseg(int j){
       seg* segNode = malloc(sizeof(seg));
       seg->bits[0]=j;
       return seg;
}

答案 1 :(得分:0)

seg* whichseg(int j){

}

这意味着该函数返回一个指向struct _seg的指针。

答案 2 :(得分:-3)

感谢您提出这个问题。修改了你的代码,只是:

typedef struct _seg {
   int          bits[256];
   struct _seg *prev;
   struct _seg *next;
} seg;

seg * whichseg(int j)
{
   seg *this;

   this = malloc(sizeof(seg));

   this->prev = this->next = NULL;

   this->bit = //your computation here

   // the code that called whichseg must free the seg
   // structured that was malloc'd in whichseg!!
   return this;

}

首先,可以使用下划线。它们在这个编译单元中的用法不会 导致(或不应该)导致问题。通常“_names”是私有变量或方法, 但这实际上取决于你的店铺标准。

whichseg只是一个函数,它返回指向堆上分配的seg结构的指针。您的代码负责在程序运行时分配但未释放的任何内存。当你的程序完成所有泄漏应该得到修复(至少在Windows中?)。

希望这有帮助。