Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с кавычками с++ https://www.cyberforum.ru/ cpp-beginners/ thread2489973.html
можете ли вы мне помочь со столь стервозной проблемой. Допустим у меня есть строка - string str = "hello "world" "\\\"" --- \'\\ test \"\' world "; и мне нужно узнать откуда...
Thread. Первый раз с много-поточностью C++
Привет, форумчане! есть код, код не мой, но хотелось бы, по возможности, разобраться. Нужно генерировать случайные строки из диапазоне mutex mtx; class Make_timer { public: Make_timer()...
C++ Thread. Многопоточность Привет! есть код, код не мой, но хотелось бы разобраться, по возможности. Нужно генерировать строки в диапазоне mutex mtx; class Make_timer { public: Make_timer() :t1(system_clock::now()) {... https://www.cyberforum.ru/ cpp-beginners/ thread2489910.html C++ Z(x,y)=min{max{sinx,siny},x,y} Как вычислить ф-цию Z(x,y)=min{max{sinx,siny},x,y} если -1.7<=x<=9.4 увеличение по 9.3, а 0<=y<=3 , увеличение по 0.75 . https://www.cyberforum.ru/ cpp-beginners/ thread2489898.html
Переменные родительского класса C++
Всем привет! Такая проблема Класс родитель class Layer { public: Layer(); ~Layer();
C++ Ускорение кода https://www.cyberforum.ru/ cpp-beginners/ thread2489857.html
Как ускорить код: #include <iostream> using namespace std; int main(){ int n, q, c = 0;
C++ Прекращается работа программы При запуске в Visual Studio 2019 программа не работает и появляется сообщение "Прекращена работа программы". Подскажите, пожалуйста, как исправить ошибку? #include<iostream> #include<stack>... https://www.cyberforum.ru/ cpp-beginners/ thread2489832.html Перебор элементов в массиве C++
Условие задачи: Написать отдельную функцию, которая принимает 2 параметра (char, int sum). Дано: 3 * (21 + 17)) / (3 - 1) + 43, если ошибок нет, функция должна вернуть значение 100, а если есть...
C++ Как сделать динамический массив глобальным https://www.cyberforum.ru/ cpp-beginners/ thread2489817.html
Нужно что бы создание, ввод и вывод были в разных функциях #include "pch.h" #include <iostream> using namespace std; int main(){ setlocale(LC_ALL,"Russian");
C++ Побитовые логические выражения https://www.cyberforum.ru/ cpp-beginners/ thread2489805.html
Пишу программу для побитовых логических операций. Приоритет ! = 4, ~ = 4, & = 3, ^ = 2, | = 1. Мои комментарии на русском. '=' показывает результат. Найденные проблемы: 1) x|y^z, это она...
C++ Можно ли так делать ?
Я пока что начинающий, поэтому хочу спросить, можно ли так делать ? #include<iostream> #include<cstdlib> using namespace std; int Factorial(int k) { if(k==1)
C++ Перегруженный оператор ввода Почему ошибка при попытке вывести результат сложения двух матриц? #include <iostream> using namespace std; class Matrix { private: https://www.cyberforum.ru/ cpp-beginners/ thread2489782.html
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,043
12.08.2019, 10:07 0

Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.? - C++ - Ответ 13765868

12.08.2019, 10:07. Показов 6052. Ответов 119
Метки (Все метки)

Ответ

Цитата Сообщение от ValeryS Посмотреть сообщение
создать массив из разношерстных элементов нельзя
Тип - это абстракция, призванная обеспечить целостность. А также преобразование значений.
В памяти значения хранятся в двоичном представлении, а тип указывает как интерпретировать тот или иной набор 1 и 0.
Я попробовал, написал код. Программа выделяет блок памяти и помещает в него разнотипные значения. Затем их можно прочитать, зная по сколько блоков памяти брать и каким типом это воспринять.
Дело в том, что у меня мало опыта работы с указателями, я расповадился STL-ом. Код, который я набрал работает не корректно. Кто желает - отредактируйте и выложите его или напишите свой на идею обезличенного обращения к памяти. Мне интересно увидеть рабочий код.

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
 
template <typename T>
T* pusher(void* ptr, T value)
{
    *(static_cast<T*>(ptr)) = value;
    auto new_ptr = static_cast<T*>(ptr) + sizeof(T);
    std::cout << "pusher(): pointer = " << static_cast<T*>(ptr)
        << " type = " << typeid(T).name()
        << " value = " << *(static_cast<T*>(ptr)) << "\n";
    return new_ptr;
}
 
template <typename T>
void* reader(void* ptr, T& value)
{
    value = *(static_cast<T*>(ptr));
    auto new_ptr = static_cast<T*>(ptr) + sizeof(T);
    std::cout << "reader(): pointer = " << static_cast<T*>(ptr)
        << " type = " << typeid(T).name()
        << " value = " << *(static_cast<T*>(ptr)) << "\n";
    return new_ptr;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    size_t count_bytes = 5u * (sizeof(double) + sizeof(bool) + sizeof(int));
    //std::cout << "count_bytes = " << count_bytes << "\n";
    void* arr = calloc(count_bytes, 1);
    void* arr2 = arr;
    void* arr3 = arr;
    {
        size_t idx = 0u;
        for (; idx < 5u; ++idx)
            arr = pusher(arr, static_cast<double>(0.5 * idx));
        for (; idx < 10u; ++idx)
            arr = pusher(arr, static_cast<bool>(idx & 1u));
        for (; idx < 15u; ++idx)
            arr = pusher(arr, static_cast<int>(2 * idx));
    }
    std::cout << "\n";
    {
        size_t idx = 0u;
        for (; idx < 5u; ++idx)
        {
            double value;
            arr2 = reader(arr2, value);
            std::cout << value << "\n";
        }
        for (; idx < 10u; ++idx)
        {
            bool value;
            arr2 = reader(arr2, value);
            std::cout << std::boolalpha << value << "\n";
        }
        for (; idx < 15u; ++idx)
        {
            int value;
            arr2 = reader(arr2, value);
            std::cout << value << "\n";
        }
    }
    free(arr3);
    std::cout << "\n";
 
    return 0;
}


На скрине приведёно успешное выполнение программы. Она то крашится, то норм. выполняется. Я говорю, что в указателях не столь хорошо разбираюсь на текущий момент.

Вернуться к обсуждению:
Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.? C++
0
Миниатюры
Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2019, 10:07
Готовые ответы и решения:

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

Можно ли в com-сервере создать массив в котором будут храниться данные какое-то время
Можно ли в com-сервере сделать так, чтобы одна из процедур выполняла вычисления и заносила их в...

Создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных
Мне нужно создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых...

Создать централизованную базу данных, где будут храниться все клиенты, всех офисов
Доброго времени суток ! Есть проблема одна. Несколько офисов, работают ведут учет клиентов в...

119
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2019, 10:07

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы
2. Дан прямоугольный массив A. Получить линейный массив B, в котором будут храниться номера тех...

Создать класс, в котором информация будет храниться в хеше.
А подскажите еще, мне нужно создать класс , в котором в хеше будет храниться информация, ее...

Комментарии. Создать модуль, в котором будет храниться процедура создания картинки
Привет всем! помогите с комментариями к программе пожалуйста... Создайте модуль, в котором будет...

дан массив целых чисел в котором храниться 20 тысяч элементов
дан массив целых чисел в котором храниться 20 тысяч элементов.Найти в массиве первый минимальный...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.