@MorUtor

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

#include <iostream>
using namespace std;
int main()
{
    int arra[4] = {10,45,20,30};
    /*cout << "Type number";
    cin >> arra[1];*/
    cout<<arra;
}


Вот что получилось
63838f33edf48153228721.png
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Правильный вывод УКАЗАТЕЛЯ на начало памяти где массив содержится. А массив вы так просто не выведете
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++
Array-to-pointer decay.
There is an implicit conversion from lvalues and rvalues of array type to rvalues of pointer type: it constructs a pointer to the first element of an array. This conversion is used whenever arrays appear in context where arrays are not expected, but pointers are:
...

Ваш массив неявно сконвертился к указателю на int, т.к. оператор << класса std::ostream массивы выводить не умеет, а вот указатели - вполне себе.
Ответ написан
Комментировать
Kiberchief
@Kiberchief
Пока учусь.
массив сам по себе это указатель на первый элемент массива без оператора раземинования тоесть * он будет показывает область в памяти где находиться первый его элемент если вы напишите
cout <<*arra << endl; то увидите 10
правильный вывод всех элементов вашего массива выглядит так
for (int i = 0; i < 4; i++)
        cout << arra[i];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы