C++ Вопрос При объявлении массива в ответе оффсет

Начинающий
Статус
Оффлайн
Регистрация
27 Сен 2023
Сообщения
45
Реакции[?]
2
Поинты[?]
2K
Всем привет, когда изучал массивы в c++, столкнулся с проблемой. При вводе этого кода:
C++:
#include <iostream>
using namespace std;
int main()
{
    const int Size = 8;
    int test [Size] = {34,56};
    cout<<test;
}
В ответе же я получал этот offset:
0x7ff16cdf8c

Стоит отметить, что это я делал на мобильном c++ компиляторе и возможно ошибка именно в этом(т.к. был не дома)
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
516
Реакции[?]
496
Поинты[?]
85K
Всем привет, когда изучал массивы в c++, столкнулся с проблемой. При вводе этого кода:
C++:
#include <iostream>
using namespace std;
int main()
{
    const int Size = 8;
    int test [Size] = {34,56};
    cout<<test;
}
В ответе же я получал этот offset:
0x7ff16cdf8c

Стоит отметить, что это я делал на мобильном c++ компиляторе и возможно ошибка именно в этом(т.к. был не дома)
а в чем собственно говоря проблема?
выводя массив подобным образом - ты выводишь указатель на него.

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

C++:
int main()
{
    constexpr int Size = 8;
    int test[Size] = { 1, 2, 3, 4, 5, 6, 7, 8 };
 
    for (auto i = 0; i < _ARRAYSIZE(test) /* or just Size */; ++i)
    {
        std::cout << test[i] << std::endl;
    }
}
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
694
Реакции[?]
326
Поинты[?]
12K
а в чем собственно говоря проблема?
выводя массив подобным образом - ты выводишь указатель на него.

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

C++:
int main()
{
    constexpr int Size = 8;
    int test[Size] = { 1, 2, 3, 4, 5, 6, 7, 8 };
 
    for (auto i = 0; i < _ARRAYSIZE(test) /* or just 8 */; ++i)
    {
        std::cout << test[i] << std::endl;
    }
}
/* or just Size */ :seemsgood:
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,967
Реакции[?]
958
Поинты[?]
19K
Всем привет, когда изучал массивы в c++, столкнулся с проблемой. При вводе этого кода:
C++:
#include <iostream>
using namespace std;
int main()
{
    const int Size = 8;
    int test [Size] = {34,56};
    cout<<test;
}
В ответе же я получал этот offset:
0x7ff16cdf8c

Стоит отметить, что это я делал на мобильном c++ компиляторе и возможно ошибка именно в этом(т.к. был не дома)
так ты выводишь указатель, чтобы получить значение, выводи каждый элемент
Код:
for ( std::size_t i{}; i < Size; i++ ) {
    std::cout << test[ i ] << std::endl;
}
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
выводя массив подобным образом - ты выводишь указатель на него.
особенно если учесть что сишный массив это лишь указатель на первый элемент то это объясняет всё сразу и очень быстро
не используй endl если просто хочешь '\n'
 
Забаненный
Статус
Оффлайн
Регистрация
28 Апр 2023
Сообщения
276
Реакции[?]
6
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, когда изучал массивы в c++, столкнулся с проблемой. При вводе этого кода:
C++:
#include <iostream>
using namespace std;
int main()
{
    const int Size = 8;
    int test [Size] = {34,56};
    cout<<test;
}
В ответе же я получал этот offset:
0x7ff16cdf8c

Стоит отметить, что это я делал на мобильном c++ компиляторе и возможно ошибка именно в этом(т.к. был не дома)
C++:
#include <iostream>
using namespace std;

int main() {
    const int Size = 8;
    int test[Size] = {34, 56};
    
    for (int i = 0; i < Size; i++) {
        cout << test[i] << " ";
    }
    
    return 0;
}
 
Сверху Снизу