質問: " << ptr_dammy->b << "\n\n"; return 0; } ``` ### 質問 1.他人のアプリケーションプログラムの解読をしていて、 名称こそ違えど、 typedef struct { }TEST, *PTEST; という書き方が多くありました。 TESTの使用方法までは理解したのですが、*PTEST の使い方が分かりません。 *PTESTは Visual Studio2010 にてどのように使われるものなのでしょうか? また書き分けている意図はあるのでしょうか? 2.Wandboxで *PTEST はどのように使う(書き方?)のでしょうか? (構造体に書くことは出来ましたが、その後が何とも出来ません・・・・) 3.場違いな質問かもしれませんが、 PTESTを使って、格納されている値数の参照は可能でしょうか? ### Wandbox URL http://melpon.org/wandbox/permlink/UIxLhi7E6iaX0DdW
回答: これはこの構造体(TEST)へのポインタとしての型を、PTEST として宣言しているのです。 分けて書けば ``` typedef struct { ... } TEST; typedef TEST *PTEST; ``` となります。 なぜわざわざポインタの型を定義するかといえば、少なくとも C においては構造体へのポインタを使う機会が多いからです。(動的なメモリ確保を安全に行おうとすれば、構造体へのポインタが出てくる) むろん、変数宣言時に TEST *ptrA, *ptrB, ... と書いてもよいのですが、タイプミスをして * を忘れてしまうと、コンパイルは通るかもしれませんが意図した動きはしません。 そのようなミスを防ぐために、PTEST ptrA, ptrB, ptrC ... のように書けるようにしよう、というわけです。