• 検索結果がありません。

プログラミング演習

N/A
N/A
Protected

Academic year: 2021

シェア "プログラミング演習"

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

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

によって、構造体 a の各メンバーにアク セスできる

a.dim = 4;

a.digits = {0, 1, 2, 3};

/* a の各メンバーを設定  */

(8)

構造体へのポインタ

任意の型 T に対して、 T へのポインタ型がある のだった

構造体についても、構造体へのポインタが存在 する.たとえば、

struct mpi { long dim;

long *digits;

} *a;

/* a mpi というタグ名の構造体へのポインタ */

(9)

構造体の動的な生成

構造体をプログラムに静的に書き込ん でおくのではなく、プログラムの実行 中に生成することができる

malloc() で必要なサイズのメモリを確保

して、目的とする構造体のポインタへ キャストする.

(10)

構造体の動的な生成(例)

mpi へのポインタ a は、前のスライドの ように宣言されているとする.

a = (struct mpi*) malloc (sizeof (struct mp i))); /* 構造体 mpi が収まるサイズのメモ リを確保 */

malloc() のエラーチェックは省いてい

る)

構造体のメンバの設定などについては、

(11)

型宣言、構造体へのポインタ

教科書 11.2, 11.3

プログラム例 mpistruct.c

(12)

型の定義( typedef )

C言語の型システムに、新たに型を追 加することができる

typedef の使い方:

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 分割した、

main.c main() 関数のみを含む)

mpilib.h (プロトタイプ宣言や define 含む)

mpilib.c (実際の関数定義などを含む)

を、従来の long * による mpi ではなく

、今日説明した mpi_t に変更すること コンパイルして、実行した様子も示せ

(15)

レポート課題提出要領

2003 12 16 日(火)一杯に、木村 までメールで送ること.

アドレスはiwao@sci.toyama-u.ac.jp

添付ファイルではなく、できるだけメー ル本文にレポート本文を記載してくださ い.

文献や友人のレポートを参考にした場合 は、それを明記のこと.

参照

関連したドキュメント

各新株予約権の目的である株式の数(以下、「付与株式数」という)は100株とします。ただし、新株予約

、肩 かた 深 ふかさ を掛け合わせて、ある定数で 割り、積石数を算出する近似計算法が 使われるようになりました。この定数は船

しかし , 特性関数 を使った証明には複素解析や Fourier 解析の知識が多少必要となってくるため , ここではより初等的な道 具のみで証明を実行できる Stein の方法

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

LF/HF の変化である。本研究で はキャンプの日数が経過するほど 快眠度指数が上昇し、1日目と4 日目を比較すると 9.3 点の差があ った。

各テーマ領域ではすべての変数につきできるだけ連続変量に表現してある。そのため

いてもらう権利﹂に関するものである︒また︑多数意見は本件の争点を歪曲した︒というのは︑第一に︑多数意見は

4 マトリックス型相互参加における量的 動をとりうる限界数は五 0