C 構造体 新しいページはコチラ
提供: yonewiki
(→構造体) |
|||
57行: | 57行: | ||
なんのために構造体を使うのか、どういう具合に使うものなのか?そこまで理解してこそのプログラミング技術。そんなスタンスで謙虚に学ぼうという姿勢を崩さないのが大事。一流のプログラマ(例えば数人で起業したGoogleの人たちみたいな)になるには、道は果てしなく遠く、ちょっとパソコンで簡単なプログラミングができるレベルの人がわんさかいる現状を考えれば、基本の技術を以下に応用できるのか?そういうところが大事なのです。自分も構造体はいまだに使いこなせていないと思っていますし…。謙虚に。謙虚に。構造体で実現されているpairとかのソースを見ると、あぁコレってすげぇなって感じると思う。 | なんのために構造体を使うのか、どういう具合に使うものなのか?そこまで理解してこそのプログラミング技術。そんなスタンスで謙虚に学ぼうという姿勢を崩さないのが大事。一流のプログラマ(例えば数人で起業したGoogleの人たちみたいな)になるには、道は果てしなく遠く、ちょっとパソコンで簡単なプログラミングができるレベルの人がわんさかいる現状を考えれば、基本の技術を以下に応用できるのか?そういうところが大事なのです。自分も構造体はいまだに使いこなせていないと思っていますし…。謙虚に。謙虚に。構造体で実現されているpairとかのソースを見ると、あぁコレってすげぇなって感じると思う。 | ||
+ | |||
+ | |||
+ | まずは自分で定義した構造体の配列を何かの関数に引き渡すサンプルを示します。 | ||
+ | |||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | #pragma once | ||
+ | #include <iostream> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | //構造体を定義 | ||
+ | struct stDate{ | ||
+ | int year; | ||
+ | int month; | ||
+ | int day; | ||
+ | }; | ||
+ | //定義した構造体を引数とする関数のプロトタイプ宣言。関数の本体はメイン関数の後くらいに記述。 | ||
+ | void stDatePrint(stDate* pstDateOutput,int nSize); | ||
+ | |||
+ | int _tmain(int argc, _TCHAR* argv[]) | ||
+ | |||
+ | int nSize = 3; | ||
+ | stDate* pstDateArr; | ||
+ | //定義した構造体のポインタ変数を作成 | ||
+ | |||
+ | pstDateArr = new stDate[nSize]; | ||
+ | //構造体ポインタ変数で配列を実体化。例ではnSize=3なので配列要素0~2まで。 | ||
+ | |||
+ | //初期化 コツコツVer。ここから | ||
+ | (*(pstDateArr)).year = 2015; | ||
+ | (*(pstDateArr + 1)).year = 2015; | ||
+ | (*(pstDateArr + 2)).year = 2015; | ||
+ | |||
+ | (*(pstDateArr)).month = 2; | ||
+ | (*(pstDateArr + 1)).month = 2; | ||
+ | (*(pstDateArr + 2)).month = 2; | ||
+ | |||
+ | (*(pstDateArr)).day = 3; | ||
+ | (*(pstDateArr + 1)).day = 4; | ||
+ | (*(pstDateArr + 2)).day = 5; | ||
+ | //ここまで | ||
+ | |||
+ | //引数に構造体ポインタ変数とその大きさをとる構造体出力関数を呼び出す。 | ||
+ | stDatePrint(pstDateArr,nSize); | ||
+ | |||
+ | delete[] pstDateArr; | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | //構造体出力関数 引数には定義した構造体ポインタ変数と構造体配列要素数を受け取る | ||
+ | void stDatePrint(stDate* pstDateOutput,int nSize){ | ||
+ | for(int i = 0;i < nSize;i++){ | ||
+ | printf("%d-%d-%d\n",(*(pstDateOutput + i)).year,(*(pstDateOutput + i)).month,(*(pstDateOutput + i)).day); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
もうちょっと踏み込んだ話は、また後日にでも記述します。(2015/02/03書きかけの記事。いつ書くのかは誰の知る由もない。) | もうちょっと踏み込んだ話は、また後日にでも記述します。(2015/02/03書きかけの記事。いつ書くのかは誰の知る由もない。) |