構造体と実体の違いや、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 ; }
上記プログラムのメモリの格納イメージ図を以下に示す。