Нужна помощь с C++

85
09 сентября 2021, 05:30

Почему выводится адрес, а не числа?

вот пример:

#include <iostream>
using namespace std;
int main(void)
{
    int x,y;
    int numbers[10][10] = 
    {{1,2,3,2,7,1,8,1,6},
    {4,7,4,2,8,9,2,5,8},
    {4,9,3,3,6,2,8,4,2},
    {1,2,3,6,2,6,8,2,1}};
    for(x = 0;x < 10;x++){
        cout << *(numbers + x);
        for(y = 0;y < 10;y++){
            cout << *(numbers + y);
        }
    }
    return 0;
}
Answer 1
  • numbers имеет тип int [10][10]
  • В данном контексте тип numbers неявно преобразуется к типу int (*)[10]
  • Тип numbers + i - тоже int (*)[10]
  • Соответственно тип *(numbers + i) - это int [10]
  • В данном контексте тип int [10] неявно преобразуется к типу int *
  • Именно этот int * вы и выводите. Потому и выводится адрес.

Другими словами, в вашем примере адрес выводится по той же самой причине, по которой выводится адрес в

int a[10];
std::cout << a << std::endl;
Answer 2

Вот такой код

int x;
int numbers[10][20];
cout << typeid(numbers).name() << endl;
cout << typeid(*(numbers+x)).name() << endl;

в VC++ выдает

int [10][20]
int [20]

Т.е. разыменование работает по первой размерности, выдавая одномерный массив...

Понятно, что для него выводится адрес.

READ ALSO
C++ std::list использование памяти

C++ std::list использование памяти

Только начинаю работать с std::list в Arduino (компилятор C++ 11) Нужно положить в std::list класс:

103
Как сделать progress bar?

Как сделать progress bar?

Выполняется сортировка в потокахВ любой момент из переменной last_index я могу узнать сколько отсортированных элементов уже есть

258
Как выводить элементы массива в приоритетном порядке , создавая кучу из массива

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

Чтобы вытащить элементы из вектора в приоритетном порядке, кроме как сортировать вектор, можно еще превратить его в кучуВот такая простенькая...

76
Как быстро переименовать переменные в VS C++

Как быстро переименовать переменные в VS C++

Допустим, у меня есть много переменных с названием "a", я хочу их все переименовать в "b" во время редактирования кодаКак можно это быстро сделать?

166