Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Размер структуры


Автор: GIK 17.12.2006, 19:04
Вопрос разьясню.
Как компилятор преобразует типы данных в структуре (преобразует их размер), если данные разного типа? В приведенном коде, видно что если в структуре определить тип int с типом char, то размер chara по ходу дела увеличивается? Но еще интереснее ситуация возникает если определить bool переменные. Это увидите сами, ниже.
Просьба помидорами не закидывать, т.к.  C++, всего два месяца изучаю.
Код

#include<iostream>
using namespace std;

struct binariStr{
 bool a;
 bool b;
 int inta;
 char char4ik;

}  ;
struct binariStr2{
 int inta;
 char char4ik;

}  ;
struct binariStr3{
 bool a;
 bool b;
}  ;

int main(int argc, char* argv[])
{
  binariStr str1;
  binariStr2 str2;
  binariStr3 str3;
  char ch;

  cout<<sizeof(str1)<<endl;
  cout<<sizeof(str2)<<endl;
  cout<<"The difference is equal 4"<<endl;
  cout<<sizeof(str3)<<endl;
  cout<<" But size of two elements such as bool is equal 2"<<endl;
  cout<<" In what logic ?"<<endl;


  cin>>ch;

     return 0;

}



Автор: Daevaorn 17.12.2006, 19:11
GIK, почитай про "выравнивание"

Добавлено @ 19:13 
Вот тут: http://en.wikipedia.org/wiki/Data_structure_alignment

Автор: bel_nikita 17.12.2006, 19:24
#pragma pack тебе поможет
http://forum.vingrad.ru/act-Search/CODE/show/searchid-c32d979fde582e53954c5b256f91b159/search_in-posts/result_type/topics/flag/search/highlite/%25E2%25FB%25F0%25E0%25E2%25ED%25E8%25E2%25E0%25ED%25E8%25E5/index.html

Автор: GIK 17.12.2006, 19:29
Цитата

GIK, почитай про "выравнивание"

Нууууууууу..... ни качу читать......... темболее там скушно все описано, да еще и по английки.....
В двух словах можно?

Добавлено @ 19:31 
Ладно, такуж и быть, почитаю........

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)