2017-05-06 18 views
1

としてNULLへのポインタを解釈++私はこの種のコードので、プログラムが障害をSEGますnullにポインタすることができ、左メイクcがゼロ

two->height = max(two->right->height, two->left->height); 

、二>権利の一つまたは二>を持っています。私が探しているのは、2 - >左がヌルなら0に変換されるので、2 - >右が自動的に真です。

この問題を解決する方法はありますか?

+0

ビットnullptr'は整数型を持っていないと整数に変換することはできませんどのような問題があるが、 'は不明。 –

+2

@RawN私はOPが 'two-> left'をゼロとして扱いたくないと確信しています。OPは、' two-> left'が '' two-> left''を '' two-> left-> height''をゼロとして扱うことを望んでいます。ヌルポインタ。 – hvd

答えて

1

これも動作することができます:

two->height =  max(
         (two->right != nullptr ? two->right->height : 0), 
         (two->left != nullptr ? two->left->height : 0) 
         ); 
+1

'== nullptr'を追加すると意味が逆転し、完全に破られました –

+0

ありがとうございました:) – ItsYou

+0

NULLはcではnull、nullptrはC++でnullですか? – ItsYou

1

まず、左右のポインタをチェックして、それらがヌルかどうかを確認します。

NULLになるポインタを処理する方法はたくさんあります。私は例のために単純なものを選んだだけです。

+0

これは非常に冗長な方法であり、コードの重複が多く発生します。 OPは特に表現力豊かなものを探しています。 –