gpt4 book ai didi

c - (C 编程) 如何使用在另一个文件中定义的数据结构和函数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:32 26 4
gpt4 key购买 nike

比如说,我有一个文件 dataStructure.cdataStructure.h。 (我的数据结构是一个散列映射。)这些文件包含数据结构的实现和向结构添加新条目以及检索条目的方法。

举个例子:

// dataStructure.h

struct node {
char *label;
int address;
struct node *next; // Points to the next node.
};

struct ourTable {
int size;
struct node **list; // List of all the (key, value) pairs.
};

// Then, here are methods to create table, add new entries and retrieving them.
struct ourTable createTable(int size);

void addEntry(struct ourTable *t, char *label, int address);

unsigned retrieveAddress(struct ourTable* table, char *label);

retrieveAddress 函数基本上只返回该标签的地址。由于我正在尝试实现一个 HashMap ,它只是几个(键,值)对的数据结构。在我的例子中,键是 label 而值是 address

unsigned retrieveAddress( struct ourTable* table, char *label)
{
int bin = 0;
bin = hashFunction(table, label); // Hashing function

struct node *list = table->list[bin];
struct node *entryItem = list;
while(entryItem)
{
if (entryItem->label == label)
{
return entryItem->address; // Returns the address of that label.
}
entryItem = entryItem->next;
}
return NULL;
}

然后,我有另一个文件 establishTable.c,它只使用 dataStructure.h 中实现的方法创建一个表,然后添加新条目。这是我在那个文件中写的:

// establishTable.c

#include "dataStructure.h"

struct ourTable establishTable()
{
struct ourTable table = createTable(1000); // Create a table with a maximum of 1000 entries.
addEntry(&table, "word", 1234);
}

我想做的是将结构 ourTable 与我在 establishTable.c 中插入的新条目传递到主文件 main.c。为了说明我正在努力完成的事情:

// main.c

#include "dataStructure.h"

#include "establishTable.h"

int main()
{
// I'm not sure how to pass the data structure... Something like this:
struct ourTable table = establishTable();

// Get the retrieveLabel function from dataStructure.h and use it here.
printf("retrieved from the table at %u\n\n", retrieveAddress(&table,"word") );
}

我尝试运行 main.c。它没有显示任何错误,只是输出

retrieved from the table at 0

这只是告诉我,我已经建立的表格根本没有传递。输出应该是 1234。

那么,如何将数据结构和函数的结果从另一个文件传递到我的 main.c 文件?当我只是在 establishTable.c 中执行所有操作时它会起作用,但这不是我的意图。我已经按照其他线程中的建议尝试了 extern 方法,但没有任何效果。

最佳答案

你忘了返回语句

struct ourTable establishTable()
{
struct ourTable table = createTable(1000); // Create a table with a maximum of 1000 entries.
addEntry(&table, "word", 1234);
return table;
}

关于c - (C 编程) 如何使用在另一个文件中定义的数据结构和函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54864929/

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