0

私は C が初めてで、構造体をヘッダー ファイルに含めたいのですが、以下で行ったことが正しいかどうかはわかりません。ヘッダーファイルで構造体を宣言する必要があると確信していますが、構造体型関数を宣言する正しい方法であるかどうかはわかりませんsearch()

#ifndef BTREE_H_INCLUDED
#define BTREE_H_INCLUDED

struct bin_tree {
    char serial[30];
    int socket;
    struct bin_tree * right, * left;
};

typedef struct bin_tree node;

node* search(node ** tree, char *val);

#endif
4

1 に答える 1

1

「以下で行ったことが正しいかどうかわかりません」

です。ポインタのアドレスを渡す (つまり、search関数を取得node ** treeする) ことは、関数にポインタを変更させたい場合に意味があることに注意してください。意味的にsearchは、これらの関数の1つではないようです:)

そして、小さな (かなり表面的な) 改善が変更される可能性があります。

struct bin_tree {
    char serial[30];
    int socket;
    struct bin_tree * right, * left;    // <-- avoid declaring pointers this way
};

typedef struct bin_tree node;

単一にtypedef:

typedef struct node {
    char serial[30];
    int socket;
    struct node * right;
    struct node * left;
} node;
于 2013-10-03T20:36:47.490 に答える