C 構造体のソースを表示
新しいページはコチラ
移動:
案内
,
検索
※このページではC言語にも存在していたという意味で記事タイトルがC ポインタになっていますが、<br /> [[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> <br /> == '''構造体''' == 簡単に考えると、変数を一塊にするためのものと言っていいですが、変数の中にポインタ変数も含めることが出来るし、関数だって組み込める。C++においてはクラスとよく似ている使い方もできるので、簡単なようで、なんとも奥深い仕組みです。あきらかに構造体を使うべきだと思うケースって、いわゆる二分木を使ったバイナリーツリーとかバイナリーサーチツリーとかという考え方に基づいてソート処理をしたり、検索処理をしたりするときのリスト構造やら、ヒープ、マルチウェイツリーを組むときとか、そんなときだったり、このデータを使うときはひとまとめにするわなってときなんです。 なんか、難しい言葉を並べましたけど、難しいことをするときと、単純にひとまとめにするときに使うということが伝われば、まぁそれでよしとします。自分みたいなアホなプログラマは構造体なんて使うとあとで、関数のデータの引数として使うときに面倒だったりするんで、安易にはあんまり使わないのは自分流ですね。良い子のプログラマは真似しちゃいけないと思う。バラバラに分けていると訳わからんくなるという負の効果も抜群です。 構造体の基本は簡単です。 以下のようにして日付構造体を自分で作ったりできます。 <syntaxhighlight lang="cpp" line start="1"> int main() { struct stDate{ int year; int month; int day; }; //これでstDateという構造体を定義したことになる。 stDate stDateTest;//stDateTestっていう名前でstDate構造体変数を作った。 //構造体変数への数値の代入 stDateTest.year = 2015; stDateTest.month = 2; stDateTest.day = 3; int nYear; nYear = stDateTest.year; //使うときも同じ return 0; } </syntaxhighlight> っていうのが基本らしい。んで、これだけで構造体の勉強を終えてしまうと、痛い目に合うらしい。 構造体変数名.構造体の中の要素の名前 ってな具合にドットで繋ぐような感じで指定する。こういうのを選択演算子って呼ぶ。「構造体の中の要素の名前」って表現したけど、構造体の要素の変数はメンバ名っていうし、関数の場合はメンバ関数って呼ぶ。この辺は後で出てくるクラスって奴と同じかな。クラスの事を少し知っている人にはなじみやすいし、あとでクラスを勉強するときにもわかりやすいね。 複数の変数をひとまとめにした構造体を定義して、定義した構造体名の変数を作って利用する。構造体の定義と同時に変数を作ることもできるし、構造体の変数をポインタとしたものを使うこともできる。先に述べたように、構造体の定義の中には、複数の変数に限らず、ポインタ変数や関数、そして、構造体そのものを含めることができる。構造体の中で構造体を再帰的に保有することができる。どこかで、その再帰的な構造体の実体を作らなければ無限に再帰することになるので、再帰的に構造体を定義する場合は、構造体の中の構造体変数の実体を持たないような、終点の工夫が必要となることは言うまでもなし。もちろん再帰的ではなく、まったく別の構造体を含めて、構造体として定義することもできる。 という具合に… 本気で使うとなるともっと難しくなっていきます。数学と一緒で基本は簡単なのに、わかったつもりで次のページをめくっていくとわからなくなるというそういう要素を含んでいるのが構造体だと思います。オレは使わないからあんまり関係ねぇとか、舐(な)めてると怪我します。 なんのために構造体を使うのか、どういう具合に使うものなのか?そこまで理解してこそのプログラミング技術。そんなスタンスで謙虚に学ぼうという姿勢を崩さないのが大事。一流のプログラマ(例えば数人で起業したGoogleの人たちみたいな)になるには、道は果てしなく遠く、ちょっとパソコンで簡単なプログラミングができるレベルの人がわんさかいる現状を考えれば、基本の技術を以下に応用できるのか?そういうところが大事なのです。自分も構造体はいまだに使いこなせていないと思っていますし…。謙虚に。謙虚に。構造体で実現されているpairとかのソースを見ると、あぁコレってすげぇなって感じると思う。 もうちょっと踏み込んだ話は、また後日にでも記述します。(2015/02/03書きかけの記事。いつ書くのかは誰の知る由もない。)
C 構造体
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ