Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2014, 20:52   #11
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Не факт, есть еще выравнивание...
А, да, точно.

Спасибо за замечание.

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

http://rextester.com/XCQTR57165

Код:
#include <iostream>
using namespace std;


struct test
{
    test()
        :value1(true)
        ,value2(true)
        ,value3(10)
    {}
    
    void AboutMe()const 
    {
        cout<< "size of int  = "<<sizeof(int)<<endl;
        cout<< "size of bool = "<<sizeof(bool)<<endl;
        cout<< "my   size = "<<sizeof(test)<<endl;
         
        const char* ptr = (const char*) this;     
        
        cout<< "my   this = "<<this<<endl;
        cout<< "my value1 = "<<&value1<< " : ptr = "<<(void*)ptr << " value1 = "<<*((bool*)ptr)<<endl;
        
        ptr +=sizeof(bool);
        cout<< "my value2 = "<<&value2<< " : ptr = "<<(void*)ptr << " value2 = "<<*((bool*)ptr)<<endl;
        
        ptr += 3*sizeof(bool);
        cout<< "my value3 = "<<&value3<< " : ptr = "<<(void*)ptr << " value3 = "<<*((int*)ptr)<<endl;
    }
    
    bool value1;
    bool value2;
    int  value3;
    
};

int main()
{
    std::cout << "Hello, world!\n";
    
    test t;
    t.AboutMe();
}

Здесь есть свои нюансы, связанные с использованием чаровых массивов, и упакованных структур.

Но смысл все равно один - следующие элементы имеют адреса больше предыдущих.
_Bers вне форума Ответить с цитированием
Старый 10.02.2014, 17:50   #12
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Спасибо за ответы.
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое заполнение ячеек в разных системах счисления viron Microsoft Office Excel 3 09.01.2012 19:28
программа выполнения арифметических операций в разных системах счисления Iraida555 Помощь студентам 2 28.12.2011 11:27
Рисование в разных системах координат Marsel737 Общие вопросы Delphi 0 07.06.2011 19:18
Представление чисел в разных системах счисления Slavytich Помощь студентам 2 03.04.2011 11:55