Я создал матрицу с указателем на указатели.
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])
Как я могу решить эту проблему? Я пробовал много разных вещей, но пока никто не работал. Заранее спасибо!
Вы не можете разыгрывать дальше, так как 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
if (matrix[0][0] == matrix[1][0]) {cout << "Equals" << endl;}
, ваша программа выдаст "Equals". Это показывает, что сравниваются значения «6» из [0] [0] и [1] [0].