0

For an assignment we must use a predetermined header file - I can not make any changes to it.

However most of the functions return a node (a struct node), but I would like them to return a pointer to the node.

Is there any way to change the function call in my functions.c file?

If not once the node is returned how can I have a pointer point to it??

For example:

bst_node_t BSTSearchNode( bst_root_t root, bst_key_t key, cmp_func_t cmp_func );

is the function prototype in the header file. However I would like to return a pointer to a node instead of the node itself.

4

1 に答える 1

2

いいえ、できません。関数の宣言と定義は一致している必要があります。

好奇心から、割り当ては、実装にリンクするプログラムでチェックされ、BSTSearchNode関数を呼び出そうとしますか?その場合、あなたは本当にそれを正しい方法で定義したいです...

編集:コメントに続いて、あなたの割り当ては実際には定義されたとおりに関数を実装することであり、その戻り値のタイプを変更することではありません。だから、それをするだけです;)

求められたとおりに値を渡し続ける方が実際には簡単かもしれません(データへのポインタを渡そうとする場合は、ノードのメモリが割り当てられている場所、ノードの所有者などに注意する必要があります... )。ヘッダーのAPIがこれに適合していない可能性があります。

もちろん、これbst_node_tは、あるエンティティへのポインタへのtypedefである場合にも当てはまります。この場合、変更する必要はありません。ヘッダーなしではわかりにくい...

于 2013-02-20T14:07:19.123 に答える