一緒に、来週のプログラミング応用の資料書いちゃえ。
構造体の参照渡し
構造体のデータを関数の呼び出しで記述する場合には、参照渡しを利用する。
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() ;
}
}