Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-1
IT入門B1C言語
第10回
-ポインタ-
2007年 6月 28日
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.例)double x ⇒ &x
8&x = 0xffff(代入不可)2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.
例)double x ⇒ &x8&x = 0xffff(代入不可)
2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.例)double x
⇒ &x8&x = 0xffff(代入不可)
2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.例)double x ⇒ &x
8&x = 0xffff(代入不可)2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.例)double x ⇒ &x
8&x = 0xffff(代入不可)
2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-2
データを得るには,まずメモリ上のアドレスが必要,また正しく解釈するためにはその型が識別されなければならない.
1. 定数ポインタ:配列や関数の名前,アドレス演算子&により生成.値は変更不可.例)double x ⇒ &x
8&x = 0xffff(代入不可)2. ポインタ宣言された変数:アドレスを扱う変数
ポインタ変数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-3
変数へのポインタとしてアスタリスクを前置して宣言する.
double *px, *pz;
double へのポインタ px,pz と呼ぶ.アドレス値を代入することが目的.
間接演算子*:ポインタ px がさす先の変数や関数(の値)を参照する.例) px = &x ⇒ *px=*(&x) ≡ x
ポインタ変数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-3
変数へのポインタとしてアスタリスクを前置して宣言する.
double *px, *pz;
double へのポインタ px,pz と呼ぶ.アドレス値を代入することが目的.
間接演算子*:ポインタ px がさす先の変数や関数(の値)を参照する.例) px = &x ⇒ *px=*(&x) ≡ x
アドレス値渡し
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-4
pxに xのアドレスが複写されるつまり px =&x
つまり*px(≡x)を読み書きする処理
関数に変数へのポインタが渡ると,元の変数のアドレスを伝えたことになり,関数の中で元の変数の読み書きができる.
呼び出し側:...double x;......ret = func(&x);...
doublefunc(double* px){
...*pxを読み書きする処理...return 式 R;
}
アドレス値渡し
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-4
pxに xのアドレスが複写されるつまり px =&x
つまり*px(≡x)を読み書きする処理
関数に変数へのポインタが渡ると,元の変数のアドレスを伝えたことになり,関数の中で元の変数の読み書きができる.
呼び出し側:...double x;......ret = func(&x);...
doublefunc(double* px){
...*pxを読み書きする処理...return 式 R;
}
アドレス値渡し
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-4
pxに xのアドレスが複写されるつまり px =&x
つまり*px(≡x)を読み書きする処理
関数に変数へのポインタが渡ると,元の変数のアドレスを伝えたことになり,関数の中で元の変数の読み書きができる.
呼び出し側:...double x;......ret = func(&x);...
doublefunc(double* px){
...*pxを読み書きする処理...return 式 R;
}
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;8 double *px = 0.1;◎ double rx; double *px;
px = ℞ *px = 0.1;○ double rx; double *px = ℞
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;
8 double *px = 0.1;◎ double rx; double *px;
px = ℞ *px = 0.1;○ double rx; double *px = ℞
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;8 double *px = 0.1;
◎ double rx; double *px;px = ℞ *px = 0.1;
○ double rx; double *px = ℞
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;8 double *px = 0.1;◎ double rx; double *px;
px = ℞ *px = 0.1;○ double rx; double *px = ℞
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;8 double *px = 0.1;◎ double rx; double *px;
px = ℞ *px = 0.1;
○ double rx; double *px = ℞
ポインタ変数の初期化
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-5
ポインタ変数の値そのものは意味のある値ではなく,ポインタがさす変数に意味(型)がある.まずは,ポイント先の実体を確保する必要がある.
8 double *px; *px = 0.1;8 double *px = 0.1;◎ double rx; double *px;
px = ℞ *px = 0.1;○ double rx; double *px = ℞
ポインタを引数とする関数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-6
関数への引数(変数)に値を保存する(書き込む)目的があるもの.
l scanf()関数l 文字列(配列)を扱う関数l その他
time()関数 ⇐ man 2 time
ポインタを引数とする関数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-6
関数への引数(変数)に値を保存する(書き込む)目的があるもの.
l scanf()関数
l 文字列(配列)を扱う関数l その他
time()関数 ⇐ man 2 time
ポインタを引数とする関数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-6
関数への引数(変数)に値を保存する(書き込む)目的があるもの.
l scanf()関数l 文字列(配列)を扱う関数
l その他
time()関数 ⇐ man 2 time
ポインタを引数とする関数
vポインタ
vポインタ変数
vアドレス値渡し
vポインタ変数の初期化
vポインタを引数とする関数
IT入門B1 C言語 (2007),木曜クラス 第 10 回:6 月 28 日 slide-6
関数への引数(変数)に値を保存する(書き込む)目的があるもの.
l scanf()関数l 文字列(配列)を扱う関数l その他
time()関数 ⇐ man 2 time