
146
9
章 ポインタ
例
9-3
関数
scalar_product()
//
この関数は
2
つの配列のスカラ積を計算する
//
引数
:2
つの
double
配列とその長さ。
2
つの配列は同じでも構わない。
double scalar_product(const double* restrict p1,
const double* restrict p2, const int n)
{
double result = 0.0;
for (int i = 0; i < n; ++i)
{
result += (p1[i] * p2[i]);
}
return result;
}
3つの
double
要素を持つ
P
という配列があれば、式
scalar_products(P, P, 3)
を使いこ
の関数を呼び出すことができる。関数は 2つの異なる
restrict
修飾ポインタでオブジェク
トにアクセスするが、最初の 2つの引数の宣言が示すように、ポインタの指す値を変更し
ない。
9.4
配列へのポインタとポインタの配列
ポインタは多くのCプログラムで配列参照に使うが、配列の要素としても使われる。配
列型へのポインタは配列ポインタと呼ばれるが、要素がポインタの配列はポインタ配列と
呼ばれる。
9.4.1
配列ポインタ
以降の記述例では
int
の配列を使う。同じ原則が多次元配列を含む他の配列型に通用
する。
配列型へのポインタを宣言するには、次の例のように括弧を使う。
int (* arrPtr)[10] = NULL; //
型
int