構造体の参照渡しとオブジェクト指向

一緒に、来週のプログラミング応用の資料書いちゃえ。

構造体の参照渡し

構造体のデータを関数の呼び出しで記述する場合には、参照渡しを利用する。

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() ;
    }
}
 

2015年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

アーカイブ

Google

このブログ記事について

このページは、T-Saitohが2015年9月29日 15:51に書いたブログ記事です。

ひとつ前のブログ記事は「構造体とオブジェクト指向」です。

次のブログ記事は「2EI実験ガイダンスでコンピュータ将棋など...」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。