我正在嘗試將指向結構體的指針傳遞給函數,然後返回所述指針的編輯後的版本。 這些都是結構的聲明:無法成功傳遞/返回結構體指針
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;
}
}
它似乎不喜歡我的功能有型我的結構之一,但我覺得這是我目前的主要問題。任何幫助都會很棒。
'main'應該返回'int'和** **不是'已經void' –
您的typedef'HashTable'爲指針,那麼什麼是'表=(哈希表* )malloc(sizeof(HashTable));'所有關於?它應該是'HashTable表; table = malloc(sizeof * table);'更好的是,不要首先用'typedef'隱藏指針,並且避免所有這些問題。 –
只要擺脫typedef。往往是這樣,它掩蓋了正在發生的事情,導致更多的混淆,而不是澄清事情。 –