1. ホーム
  2. c

[解決済み] C言語の**はどういう意味ですか?

2022-03-14 07:21:46

質問

サンプルはこちら C のプログラムを理解しようとしています。以下はソースコードから関数を抜粋したものです。

double** Make2DDoubleArray(int arraySizeX, int arraySizeY)
{
  double** theArray;
  theArray = (double**) malloc(arraySizeX*sizeof(double*));
  int i = 0;

  for (i = 0; i < arraySizeX; i++)
    theArray[i] = (double*) malloc(arraySizeY*sizeof(double));

  return theArray;
}

私の疑問は、この ** を返します。私は、この * は、一般的に pointer . にも使われることがありますね。 dereference ポインタを指定します。

このことから、私は double** は、基本的に参照のデリファレンスであるため、ダブル値である。私の考え方は正しいのでしょうか?もしそうでないなら、どなたか ** この例では?

どのように解決するのですか?

この場合 double はdouble型の変数を意味します。

double* は double 変数へのポインタを意味します。

double** は、ダブル変数へのポインタへのポインタを意味します。

投稿された関数の場合、doubleの2次元配列のようなものを作成するために使用されます。つまり、ダブルポインタの配列へのポインタがあり、そのポインタの各々がポインタの配列を指しています。