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

时间:2014-05-02 02:30:30

标签: c pointers struct

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

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;
    }
}

我的功能似乎并不像我的其中一种结构,但我觉得这是我目前的主要问题。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:-2)

尝试

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

只需修改作为参数传递的对象即可。那你不需要回报。

对于C do

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