Почему выводится адрес, а не числа?
вот пример:
#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]
Т.е. разыменование работает по первой размерности, выдавая одномерный массив...
Понятно, что для него выводится адрес.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости