構造体と実体の違いや、Javaに慣れている学生さんに あらためて、データ構造のイメージを持って欲しいので、 以下のコードを示す。
struct Complex {
double re ;
double im ;
} ;
struct Complex2 {
double* pre ;
double* pim ;
} ;
void main() {
// メモリ確保失敗のNULLチェックは省略
struct Complex a ;
struct Complex* p ;
struct Complex2 b ;
struct Complex2* q ;
a.re = 1.2 ;
a.im = 2.3 ;
p = (struct Complex*)malloc( sizeof( struct Complex ) ) ;
p->re = 1.2 ;
p->im = 2.3 ;
// in Java
// p = new Complex ;
// p.re = 1.2 ;
// p.im = 2.3 ;
b.pre = (double*)malloc( sizeof( double ) ) ;
*(b.pre) = 1.2 ;
b.pim = (double*)malloc( sizeof( double ) ) ;
*(b.pim) = 2.3 ;
q = (struct Comple2*)malloc( sizeof( struct Complex2 ) ) ;
q->pre = (double*)malloc( sizeof( double ) ) ;
*(q->pre) = 1.2 ;
q->pim = (double*)malloc( sizeof( double ) ) ;
*(q->pim) = 2.3 ;
}
上記プログラムのメモリの格納イメージ図を以下に示す。