cd c を実行した後で( ~/c に移動した後で )、以下の課題を
やってみよ。
前のページの最後の例を入力し、動かして見よ。
21.1 の課題を改良し、ユーザーの入力行が 10 行までは記憶できるようにし、 最後にそれらを出力するようにせよ。但し、ポインタ配列を用いる。
課題 19.4 を改良し、配列で学生のデータを確保している部分を メモリ割り当てで行うようにせよ。但し、個々のデータへのポインタは 前の問題と同じくポインタ配列を使うこととする。 すなわち、
struct gakusei g[100];の部分を以下のように変更し、
struct gakusei *g[100];それぞれの struct gakusei型のデータは、必要になる度に以下のように して確保します。
g[i] = (struct gakusei *)malloc(sizeof(struct gakusei));
作成したプログラムをメイルで creport まで送りなさい。題は、kadai21 とする事。
void * malloc( int );
引数には必要なメモリ量をbyte単位で指定する。また、
正確には引数には符号無整数を用いる。
返り値は割り当てられたメモリへのアドレスが返る。
malloc()で確保したメモリの開放には free() を用いる。
void free( void * );
引数に開放したいメモリへのアドレスを指定する。
char *p;
p = (char *)malloc(10);
int strlen( char * );
但し、文字列の終わりの \0 は数えられない。
文字列のコピーのために strcpy()がある。
char *strlen( char *dest, char *src );
malloc( sizeof(int) * 10 );