gpt4 book ai didi

无法成功传递/返回结构指针

转载 作者:行者123 更新时间:2023-11-30 18:15:33 25 4
gpt4 key购买 nike

我试图将指向结构的指针传递给函数,然后返回该指针的编辑版本。这些是结构的声明:

struct HshTble;
typedef struct HshTble *HashTable;
enum EntryStatus { Occupied, Empty, Deleted };
struct HashEntry {
int Element;
enum EntryStatus Info;
};
typedef struct HashEntry Entry;

struct HshTble{
int TableSize;
Entry *Array;
};

正如您所看到的,有一个指向另一个结构中的结构的指针。我的问题是当涉及到尝试用这些东西做某事时......我会将我的代码放在到目前为止,希望清楚应该发生什么,但我也会添加注释。

void main(){
HashTable *table;
int size;

table = (HashTable*) malloc (sizeof(HashTable));

table = createTable(table, &size);

接下来是问题出现的地方,我的想法是我想编辑表中的值:

 HashTable createTable(HashTable table, int *size){
int x, y, ch;
*size = 0;
fopen_s(&fp, DATA_FILENAME, "r");

while (EOF != fscanf_s(fp, DATA_FILENAME, &ch))
{
y = x = f(ch);
++*size;

if (table->Array[x].Info != Occupied)
{
table->Array[x].Element = ch;
table->Array[x].Info = Occupied;
}
else if (table->Array[x].Info == Occupied)
{
while (table->Array[y].Info == Occupied)
{
if (y > HASH_TABLE_SIZE)
{
y = 0;
table->Array[y].Element = ch;
table->Array[y].Info = Occupied;
}
else
{
table->Array[y + 1].Element = ch;
table->Array[y + 1].Info = Occupied;
}
y++;
}
}
return table;
}
}

我的函数似乎不具有我的结构之一的类型,但我觉得这是我目前的主要问题。任何帮助都会很棒。

最佳答案

尝试

void createTable(HashTable &table, int *size){

只需修改作为参数传递的对象即可。那么您就不需要返回。

对于C来说

void createTable(HashTable *table, int *size){

关于无法成功传递/返回结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com