Почему выводится адрес, а не числа?
вот пример:
#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;
}
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;
Вот такой код
int x;
int numbers[10][20];
cout << typeid(numbers).name() << endl;
cout << typeid(*(numbers+x)).name() << endl;
в VC++ выдает
int [10][20]
int [20]
Т.е. разыменование работает по первой размерности, выдавая одномерный массив...
Понятно, что для него выводится адрес.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Только начинаю работать с std::list в Arduino (компилятор C++ 11) Нужно положить в std::list класс:
Выполняется сортировка в потокахВ любой момент из переменной last_index я могу узнать сколько отсортированных элементов уже есть
Чтобы вытащить элементы из вектора в приоритетном порядке, кроме как сортировать вектор, можно еще превратить его в кучуВот такая простенькая...
Допустим, у меня есть много переменных с названием "a", я хочу их все переименовать в "b" во время редактирования кодаКак можно это быстро сделать?