Как я могу получить и сравнить данные?

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])

Как я могу решить эту проблему? Я пробовал много разных вещей, но пока никто не работал. Заранее спасибо!

Теги:
arrays
pointers
matrix

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню