0

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

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

*seg whichseg(int j){

}

但是,当我编译时,这个函数*seg whichseg(int j){给我一个错误。我想知道seg *在赛格之后应该有一颗星吗?这个函数到底是什么意思,它是否让 j 自动成为一个 seg 结构?

谢谢你们 :-)

4

3 回答 3

1

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

到目前为止,您的函数什么也没做,并且通过进行上述更改,编译器仍然会抱怨说该值未经过处理。

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

seg* whichseg(int j){
       seg* segNode = malloc(sizeof(seg));
       seg->bits[0]=j;
       return seg;
}
于 2013-09-22T04:41:51.863 回答
0
seg* whichseg(int j){

}

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

于 2013-09-22T04:49:49.883 回答
-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 中?)。

希望这可以帮助。

于 2013-09-22T05:28:08.317 回答