Форум программистов, компьютерный форум CyberForum.ru

приведение типов указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ signal.h http://www.cyberforum.ru/cpp-beginners/thread807099.html
Доброго времени суток! Начал разбираться с сигналами и понял что как работать с ними под windows мало литературы... так вот, у меня есть код: // showarg.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <signal.h> #include <locale> using namespace std;
C++ Debug assertion failed Во время отладки вылазит такая ошибка,не могу понять в чём дело http://www.cyberforum.ru/cpp-beginners/thread807091.html
C++ Динамический массив с большим количеством элементов
Нужно создать динамический массив (каждый элемент целое положительное число до 10^9), который по введенным данным создавал N элементов массива, где N может быть до 10^5. unsigned long int *arr = new unsigned long int; Я сделал так, но если количество элементов больше 45920, то выводит ошибку "terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc...
вызов конструктора C++
Здарова! Есть допустим класс: class Str { Str(); Str(Str&); Str(char*); };
C++ Где ошибка? Чтение массива из файла http://www.cyberforum.ru/cpp-beginners/thread807062.html
Пишу программу которая читает вектор и массив из файла. После чего перемножает вектор на массив (получается в итоге вектор). причем отправка на кластеры происходит по столбцам. Но прога да же читать файл не хочет. Файл физичиски присутствует и заполнено но на экран нечего не выводится, а прога падает. stdafx.h #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h>...
C++ Как такое может быть? (вызов функции-члена без объекта) собственно вопрос озвучен. #include <iostream> using namespace std; class Test { public: void print() { подробнее

Показать сообщение отдельно
Алексей89
 Аватар для Алексей89
29 / 29 / 3
Регистрация: 19.02.2013
Сообщений: 107
13.03.2013, 02:06  [ТС]     приведение типов указателей
Код C++
1 int a=sizeof(bool);


дало 1
что равноКод C++
1 int c=sizeof(char);
Этот факт наводит на мысль, что bool переменные реально в памяти занимают по крайне мере один байт, видимо так уж нужно для корректной работы адресного пространства в ОС.
Так что, похоже, даже если бы я всё-таки нашёл способ приведения типа указателя, я бы получил совсем не то что рассчитывал.
Выходом из этой ситуации видятся битовые поля
посмотри на битовые поля
http://www.c-cpp.ru/books/bitovye-polya
а потом используй union объединение
Я даже нашёл темку на форуме Выдать побитовое представление используя union и битовые поля.
Но меня смущает ряд ограничений приведенных в упомянутой статье:
Битовые поля имеют некоторые ограничения. Нельзя получить адрес переменной битового поля. Переменные битового поля не могут помещаться в массив. Переходя с компьютера на компьютер нельзя быть уверенным в порядке изменения битов (слева направо или справа налево). Любой код, использующий битовые поля, зависит от компьютера.
В связи с этим у меня возникло несколько вопросов:
1. Что такое union и чем оно отличается от struct?
2. Если нельзя получить адрес элемента структуры, можно ли получить адрес всей структуры?
3. Невозможность побитного использования памяти (за исключением битовых полей) исходит от ОС или от архитектуры процессора?
 
Текущее время: 22:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru