なぜそれが自分自身を定義する前に(Cで)(Javaで)クラス型または構造体の型を宣言することは可能でしょうか?

ホワイトハット:

ここでは、私はCやJavaで不思議いくつかの例を示したいと思います

Cプログラミングでは、

struct node{
    struct node *p_node;   //here
};

Javaプログラミングでは、

public class node{
    public node nd= new node();  //here
}

それらの両方は、宣言の共通点持っているclass(struct)完全に自分自身を定義する前にタイプを。

例の上に、あなたが見ることができます:struct node *p行とpublic node nd= new node();行がまたは「}」の前に記述されています「;」。

この行では、どのように彼らは自己のタイプのにもかかわらず、タイプを完全に定義されていません知っていますか?

jwenting:

あなたは、単に構造体のインスタンスへのポインタにメモリを割り当てています。そのためにどのくらいのメモリを必要とされ、コンパイル時には無関係であり、実行時に知られるであろう。

フィールドが割り当てられているときに必要だとすべてが(この文脈では、本質的に似ている、Javaのか、参照、)ポインタが取るどのくらいのメモリを知っている、多くのメモリは、それが参照していますどんな店に必要になるではありませんか。

そして、はい、それは過度に特にジャワの場合には、簡略化されています。しかし、それは一般的な考えです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197760&siteId=1