二分探索木データ構造を使用して、一連の構造体を型定義で並べ替えています。
typedef struct {
char c;
int index;
} data_t;
typedef struct node node_t;
typedef node {
void *data;
node_t *left;
node_t *right;
}
node_t typedef は、この目的のために私に提供されたライブラリからのもので、おそらくポリモーフィズムを確保するための void* ポインターを使用しています。 node
関数に渡されます:
static void
*recursive_search_tree(node_t *root,
void *key, int cmp(void*,void*))
recursive_search_tree 関数内で、コードを変更して、index 要素を条件として使用して、文字の配列に対する線形パスのインデックスに最も近い一致を見つけられるようにしたいと考えています。これには、最終的に data_t が渡され*key
、key->index
関数内でアクセスされています。
質問
key->index
キーが構造体をvoid*
指している場所にアクセスすることは可能ですか、それともキーの型として宣言されているdata_t
場合にのみ可能でしょうか? data_t
私は後者をやろうとしましたが、ポインターを int にキャストしてもコンパイラーを通過しないようです。