0

私は C の上級者ではありません。Java の方が好きです。私は仲間の 1 人に次のコードを見ましたが、それがうまくいくかどうか知りたいです。なぜなら、彼にはうまくいかなかったからです。

typedef struct nameOfStruct {
   type1 *elem1;
   type2 *elem2;
   struct nameOfStruct *next;
} *nameOfStruct;  

それで、それは可能です*nameOfStructか、それとも単にそうあるべきnameOfStructですか?

4

3 に答える 3

2

これは有効な C ですが、使用すると信じられないほど混乱するでしょう (nameOfStructオブジェクト型のように聞こえますが、実際にはポインターです)。だから避けてください。

于 2012-05-04T09:05:49.080 に答える
1

呼び出しコードを見ずにこれに答えるのは不可能ですが、知っておくべきことは次のとおりです。

*nameOfStruct構造体へのポインターのエイリアスを作成しますが、名前が実際のポインターであることを示唆していないため、誤解を招く可能性があります。私はそれを使用することをお勧めしません。

彼がそれをショートカットとして使用したい場合はstruct nameOfStruct、余分な*.

于 2012-05-04T09:06:02.823 に答える
0

nameOfStructへのポインタstruct nameOfStructです。 *nameOfStructへのポインタへのポインタstruct nameOfStructです。

どちらも有効であり、意味が異なります。最初のものを使用したいと思います。nameOfStruct_ptrただし、名前が紛らわしいため、typedef に名前を付ける必要があります。

于 2012-05-04T09:06:35.447 に答える