プロが教える店舗&オフィスのセキュリティ対策術

C初学者です。
2分探索木のプログラムをCで組もうと思っており、いろんなサイト様に乗っている
ソースなどを参考にしているのですが自分の知らない表現があります。

たとえば各値を管理する構造体をnodeとすると、値を探す関数searchの宣言で

node* search(node* root,int val)

のような文があるのですがnode* とはどういう書き方なのでしょうか。
手元にある初学者向けの本で調べては見たのですが載っていないようです。
(node *rootならともかくnode* rootがわかりません。
 つまりnodeという型の横に*をつけるという文法がわからないのです。
 実際にそのプログラムがどう動くか、などを聞いているわけではありません。)

どうかよろしくお願いいたします。


ちなみに以下のようなごく簡単な?ポインタの使い方はどうにかわかっています(多分)。
/* 2つの変数の値を交換する */(mainなどは略)
int n1,n2,temp;
int *p1=&n1,*p2=&n2;

temp = *p1;
*p1 = *p2;
*p2 = temp;

A 回答 (3件)

node* root という書き方は、ご想像通りポインタですが、C言語ではなくC++の書き方です。



C++ではポインタも”参照型”という変数型であるかのように、
C言語で int *p; と書くものを、int* p; と書くことができます。
ポインタの扱い方は変わりません。

C++の話ですから、C言語の本を読んでも記述が見つからなくて当然だと思います。
    • good
    • 0
この回答へのお礼

なるほどです。理解できました!

お礼日時:2006/07/19 10:30

#1の方の仰るように


node* root;
node *roor;
は、同じです。
意味合いとしては、node* という型だと強調したいというような意味合いがあるように思います。
しかしながら、C言語では、
node* root, second;
と書いた場合、
node *root;
node *second;
のように思えるけれども
実際は
node *root;
node second;
の意味なので、反って紛らわしいと思います。
そういう意味では、typedef でNODEP 型を作っておくといいかと思います。
ならば、
NODEP root,second;
と書いても問題ありません。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2006/07/19 10:30

node* root


node *root
node * root
これらは全部同じです。敢えて言えばC++だと「node* root」と書くことが多いみたいです。
    • good
    • 0
この回答へのお礼

すばやいご返答ありがとうございます。助かりました。

お礼日時:2006/07/19 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!