一緒に、来週のプログラミング応用の資料書いちゃえ。
構造体の参照渡し
構造体のデータを関数の呼び出しで記述する場合には、参照渡しを利用する。
struct Person { char name[ 20 ] ; int age ; } ; void print( struct Person* p ) { printf( "%s %d¥n" , p->name , p->age ) ; } void main() { struct Person saitoh ; strcpy( saitoh.name , "t-saitoh" ) ; saitoh.age = 50 ; print( &saitoh ) ; }
このようなプログラムの書き方をすると、「データ saitoh に、print() せよ…」 といった処理を記述したようになる。 これを発展して、データ saitoh に、print という命令をするイメージにも見える。
この考え方を、そのままプログラムに反映させ、Personというデータは、 名前と年齢、データを表示するprintは…といったように、 データ構造と、そのデータ構造への処理をペアで記述すると分かりやすい。
オブジェクト指向の導入
オブジェクト指向では、データ構造とその命令を合わせたものをクラス(class)と呼ぶ。 また、データ(class)への命令は、メソッド(method)と呼ぶ。
class Person { private: char name[ 20 ] ; int age ; public: Person( char s[] , int a ) { strcpy( name , s ) ; age = a ; } int scan() { return scan( "%s %d" , name , &age ) ; } void print() { printf( "%s %d¥n" , name , age ) ; } } ; void main() { Person saitoh( "t-saitoh" , 50 ) ; saitoh.print() ; Person table[ 50 ] ; for( int i = 0 ; i < 50 ; i++ ) { if ( table[ i ].scan() != 2 ) break ; table[ i ].print() ; } }