0

背景:我在一个名为 hash_table.c 的文件中创建了一个 Hashtable。这是我的头文件 hash_table.h 包含的部分内容:

/* hash_table.h */
#ifndef HASH_TABLE_H
#define HASH_TABLE_H

enum {BUCKET_COUNT = 1024};

struct Node {
    char *key;
    char *value;
    struct Node *next;
};

struct Table {
    struct Node *array[BUCKET_COUNT];
};

struct Table *TableCreate(void);   //creates the table
....

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我想在另一个名为 fdata.c 的 C 文件中启动 Hashtable。我不知道最好的方法是什么,但这是我的想法:

#include "hash_table.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Table *t;  //initiate the variable

void testFunc()
{
    if(Hashtable does not exist) {  //How do I accomplish this? Is it possible?
        t = TableCreate(); //create the table
    else{
        continue...
    ....

显然,如果有更好的方法来启动这个表,我会全力以赴。(这是我第一次在 C 中使用结构)

感谢您的支持!

4

1 回答 1

1

全局指针将nil在应用启动时初始化。您可以比较nil然后调用TableCreate.

或者,您可以在启动时创建表。(例如来自main,或者如果您实际上正在编写Objective C,application:didFinishLaunchingWithOptions或者类似的东西。)

于 2013-05-05T23:58:39.670 回答