0

ポインターへのポインターを使用してマトリックスを作成しました。

int** matrix = new int*[5];
for(int i = 0; i < 5; i++)
    matrix[i] = new int[5];

私が正しく仮定すると、これはポインタの配列を指すmatrixという名前のポインタを作成し、配列内の各ポインタは整数配列を指し、その配列の項目は整数型データで構成されます。私はこのように数を書きました:

for(int i = 0; i < 5; i++)
    for(int j = 0; j < 5; j++)
        matrix[i][j] = 6 + j;

ここで問題が発生します。マトリックスのアイテムを比較しようとすると、if ステートメントはマトリックス内に格納されているデータを比較するのではなく、アイテムのメモリ アドレスを比較します。

if(matrix[i][0] == matrix[i][j])

どうすればこの問題を解決できますか? いろいろ試してみましたが、今のところどれもうまくいきませんでした。前もって感謝します!

4

1 に答える 1

2

matrix[i][j]は行列内の実際の値 (整数) に解決されるため、これ以上逆参照することはできません。

私はこのコードでテストしました:

cout << "Value of matrix[0][0]: " << matrix[0][0] << endl;
cout << "Pointer to matrix[0][0]: " << &matrix[0][0] << endl;

それは私に与えました:

Value of matrix[0][0]: 6
Pointer to matrix[0][0]: 0x1705040
于 2013-10-13T22:22:37.933 に答える