2017-10-27 14 views
1

私はいくつかのCのソースコードを読むことをしようとしていると私は理解していない構造の割り当てに遭遇しました:このC構造体の代入は何を意味しますか?

static struct sym_table *sym_array = (struct sym_table *) 0; 

私は左手側を初期化しようとしていることを理解'sym_table'型の構造体へのポインタ(別の場所で定義されています)。しかし、私は右手側を理解するのに苦労しています。おそらくかなりシンプルですが、私が見たオンラインのCチュートリアルでは、この種の割り当ての類似した例は見つかりません。

誰かがそれに光を当てることができれば、本当にありがとう!

+1

それは、0に設定する適切なポインタ型に0の値をキャストしています。 'NULL'マクロの方が良いでしょう。 –

+1

それはその構造体へのポインタであるために0をキャストしていますが、それは正しい方法ではありません。NULLを使用するのが好ましい方法です。 –

答えて

4
static struct sym_table *sym_array = (struct sym_table *) 0; 

型(構造体sym_table *)のNULLポインタです。あなたはより良いでしょう:

static struct sym_table *sym_array = NULL; 
+0

よろしくお願いいたします。はい、それはヌルポインタを設定するかなり長い方法のように思えます:-) – Time4Tea

2

右側はNULLポインタに相当します。しかし、ここで、それはNULLへのポインタを設定する若干面倒な方法である、NULL((void *)0)stdio.hように定義される

2

これは、Stroustrup方法です。彼はマクロを嫌う。だから彼はいつも自分のコードに0を使用しています。最終的にはnullptrというキーワードがnullptrに導入されました。私はそれがC++コードまたは通常C++を使用する人が書いたプログラムからだと思います。

+0

しかし、私はそれでC + +の魂を参照してください:) –

+0

このメソッドの利点は、定義するか、何も含める必要はありませんです。君の言う通りかもね。 –

関連する問題