我正在读一本书并自学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结构?
谢谢大家: - )
答案 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中?)。
希望这有帮助。