Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング演習II 2003年12月10日(第7回) 木村巌.

Similar presentations


Presentation on theme: "プログラミング演習II 2003年12月10日(第7回) 木村巌."— Presentation transcript:

1 プログラミング演習II 2003年12月10日(第7回) 木村巌

2 今日やること 構造体、構造体のポインタ、typedef

3 復習 前回は、正負の整数の加減算を実装した

4 構造体(structure) 教科書11章 異なる型を一つに集約する 配列は、同じ型の値のみ保持できるのだった

5 構造体の宣言 struct tag名 { 型名 メンバ1; 型名 メンバ2; ……. };

6 構造体の例 struct mpi { int dim; long *digits; }; struct mpi a;

7 構造体のメンバへのアクセス struct mpi a; /* の時は */ a.dim; a.digits;

8 構造体へのポインタ 任意の型Tに対して、Tへのポインタ型があるのだった 構造体についても、構造体へのポインタが存在する.たとえば、
struct mpi { long dim; long *digits; } *a; /* aはmpiというタグ名の構造体へのポインタ*/

9 構造体の動的な生成 構造体をプログラムに静的に書き込んでおくのではなく、プログラムの実行中に生成することができる
malloc()で必要なサイズのメモリを確保して、目的とする構造体のポインタへキャストする.

10 構造体の動的な生成(例) mpiへのポインタaは、前のスライドのように宣言されているとする.
a = (struct mpi*) malloc (sizeof (struct mpi))); /* 構造体mpiが収まるサイズのメモリを確保 */ (malloc()のエラーチェックは省いている) 構造体のメンバの設定などについては、プログラム例mpistruct.cも参照の事

11 型宣言、構造体へのポインタ 教科書11.2, 11.3 プログラム例mpistruct.c

12 型の定義(typedef) C言語の型システムに、新たに型を追加することができる typedefの使い方:
typedef long *long_ptr; longへのポインタを、long_ptrという新たな型として追加

13 構造体のポインタを新たな型とする 上のように定義した構造体mpiを指すポインタを、新たな型として定義する:
typedef struct mpi *mpi_t; これで、long, doubleのような組込型同様に、mpi_tも使うことができる. (ただし、mpi_t型の変数は、使う前にメモリを確保し、各メンバーを初期化する必要がある.関数mpi_init()参照)

14 レポート課題 前回3分割した、 を、従来のlong *によるmpiではなく、今日説明したmpi_tに変更すること
main.c (main()関数のみを含む) mpilib.h (プロトタイプ宣言やdefineを含む) mpilib.c (実際の関数定義などを含む) を、従来のlong *によるmpiではなく、今日説明したmpi_tに変更すること コンパイルして、実行した様子も示せ

15 レポート課題提出要領 2003年12月16日(火)一杯に、木村までメールで送ること.アドレスはiwao@sci.toyama-u.ac.jp
添付ファイルではなく、できるだけメール本文にレポート本文を記載してください. 文献や友人のレポートを参考にした場合は、それを明記のこと.


Download ppt "プログラミング演習II 2003年12月10日(第7回) 木村巌."

Similar presentations


Ads by Google