See guys.. the order is important but the size of whole structure
needs to be a multiple of its largest sized variable...
eg:

struct p
{
        double data;
        char a;
        char b;
        char c;
        char d;
        }t;


struct q
{        char c;
        char d;
        double data;
        char a;
        char b;
        }t1;

sizeof(t)=16
sizeof(t1)=24

This can be explained:Lets say address starts at 0

In q structure, c and d take one byte each so data starts at 3 but it
cant start at 3 (not its size multiple)...
so double data starts at 8, leaving all 3-7 positions padded to char c and d

double ends at 16 so char a and b occupy 17 and 18 addresses.

But if next structure variable starts, it wud have to start at 19
which is not 8's multiple..

So , char a and b are padded till address 23 and hence next structure
variable can start at 24..(8 * 3)

Hence t1's size =24, neither 19 nor 12...

Similarly, we can account for structure p's variable t..t=16
bytes(char a,b,c,d occupy 4bytes, get padded upto 7 and double then
starts at 8 upto 15, next variable starts at 16..)

Am i clear...???



On 8/6/11, Nitish Garg <nitishgarg1...@gmail.com> wrote:
> I think that the order is important. Because when we consider an array of
> structures the order becomes extremely important just as shown in the above
> example.
>
> On Sat, Aug 6, 2011 at 6:18 PM, Prashant Gupta
> <prashantatn...@gmail.com>wrote:
>
>> Interesting :
>> #include<iostream>
>> using namespace std;
>> int main()
>> {
>>     struct p{
>>         int i;
>>         char j;
>>         char k;
>>     };
>>     struct q{
>>         char j;
>>         int i;
>>         char k;
>>     };
>>     printf("p=%u q=%u",sizeof(p),sizeof(q));
>>     return 0;
>> }
>> o/p : p=8 q=12
>>
>> On Sat, Aug 6, 2011 at 2:55 PM, Tushar Bindal
>> <tushicom...@gmail.com>wrote:
>>
>>> that means the order is immaterial.
>>> the sizeof the struct always remains same irrespective of the order and
>>> just depends on the type of variables???
>>> why char with double does not get size in multiples of 8??
>>>
>>>
>>> On Sat, Aug 6, 2011 at 12:54 PM, Puneet Gautam
>>> <puneet.nsi...@gmail.com>wrote:
>>>
>>>> Sorry guys, int is 4 bytes on 64 bit and 2 bytes on 32 bit system..
>>>>
>>>> But padding rule remains same for both structures as mentioned above...
>>>>
>>>>
>>>>
>>>>
>>>> On 8/6/11, Puneet Gautam <puneet.nsi...@gmail.com> wrote:
>>>> > There is no difference between the two...
>>>> >
>>>> > On 32 bit system, both structures need every address location where
>>>> > int and pointer are stored to be a multiple of 4(highest size is 4)..
>>>> >
>>>> > On 64 bit,
>>>> > even if pointer is 4bytes(say, in 64 bit system), and p1, p2 be
>>>> > structure variables, then p2 should start at address which is multiple
>>>> > of 8 as int data is 8bytes. So, if p1 starts at 0, it should end at 16
>>>> > not 12 so that p2 starts at 8's multiple.
>>>> >
>>>> > This is done by padding pointer by 4bytes in both I and II struct.
>>>> > declarations.
>>>> >
>>>> >
>>>> > Hope i made it clear...!
>>>> >
>>>> > Thanks.
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > On 8/6/11, Tushar Bindal <tushicom...@gmail.com> wrote:
>>>> >>
>>>> http://www.serc.iisc.ernet.in/ComputingFacilities/systems/cluster/xlf/html/xlfug/ug35.htm
>>>> >> this says int is always 4 bytes and pointer is 8 bytes on 64 bit
>>>> >> compiler.
>>>> >>
>>>> >> so how does padding affect these structures because of the difference
>>>> in
>>>> >> size of int and pointer?
>>>> >>
>>>> >>
>>>> >> I tried this program
>>>> >> https://ideone.com/CRU6x#view_edit_box
>>>> >> char always gets 4 bytes whenever it has int or double in the same
>>>> struct
>>>> >> irrrespctive of the order of the declaration of variables.
>>>> >> I thought char should get size 8 when there is a double in the ame
>>>> struct
>>>> >> whereas it gets size 4 only.
>>>> >> what is the problem here?
>>>> >>
>>>> >> On Sat, Aug 6, 2011 at 4:40 AM, Shashank Jain <shashan...@gmail.com>
>>>> >> wrote:
>>>> >>
>>>> >>> i dont understand the diff btw dem, could u plz elaborate?
>>>> >>>
>>>> >>> Shashank Jain
>>>> >>> IIIrd year
>>>> >>> Computer Engineering
>>>> >>> Delhi College of Engineering
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>> On Sat, Aug 6, 2011 at 12:32 AM, Kamakshii Aggarwal
>>>> >>> <kamakshi...@gmail.com
>>>> >>> > wrote:
>>>> >>>
>>>> >>>> in case of 64 bit,
>>>> >>>> size of second structure will also be 16 not 8
>>>> >>>>
>>>> >>>>
>>>> >>>> On Fri, Aug 5, 2011 at 11:40 PM, UTKARSH SRIVASTAV <
>>>> >>>> usrivastav...@gmail.com> wrote:
>>>> >>>>
>>>> >>>>> I think voth are just same..................
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> On Fri, Aug 5, 2011 at 10:57 AM, priya v <pria....@gmail.com>
>>>> wrote:
>>>> >>>>>
>>>> >>>>>> in case of 64 bit machine y doesn't padding happen in the 2nd
>>>> >>>>>> structure?
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> On Fri, Aug 5, 2011 at 11:21 PM, hary rathor
>>>> >>>>>> <harry.rat...@gmail.com>wrote:
>>>> >>>>>>
>>>> >>>>>>> no ,if u r using 32 bit machine . that will use 4 byte pointer
>>>> size
>>>> >>>>>>> ,
>>>> >>>>>>> but   in 64 machine that enforce to be size of 8 . where padding
>>>> >>>>>>> will
>>>> >>>>>>> take int your given first structure
>>>> >>>>>>>
>>>> >>>>>>> so for 32 bit- size will 8 8 for both structure
>>>> >>>>>>> for 64 bit - size will 16 and 12 respectively cause of 4 bit
>>>> padding
>>>> >>>>>>> in
>>>> >>>>>>> one structure
>>>> >>>>>>>
>>>> >>>>>>> hence 2nd structure is good for use
>>>> >>>>>>>
>>>> >>>>>>> --
>>>> >>>>>>> You received this message because you are subscribed to the
>>>> Google
>>>> >>>>>>> Groups "Algorithm Geeks" group.
>>>> >>>>>>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >>>>>>> To unsubscribe from this group, send email to
>>>> >>>>>>> algogeeks+unsubscr...@googlegroups.com.
>>>> >>>>>>> For more options, visit this group at
>>>> >>>>>>> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>>>>>>
>>>> >>>>>>
>>>> >>>>>>  --
>>>> >>>>>> You received this message because you are subscribed to the
>>>> >>>>>> Google
>>>> >>>>>> Groups "Algorithm Geeks" group.
>>>> >>>>>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >>>>>> To unsubscribe from this group, send email to
>>>> >>>>>> algogeeks+unsubscr...@googlegroups.com.
>>>> >>>>>> For more options, visit this group at
>>>> >>>>>> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> --
>>>> >>>>> *UTKARSH SRIVASTAV
>>>> >>>>> CSE-3
>>>> >>>>> B-Tech 2nd Year
>>>> >>>>> @MNNIT ALLAHABAD*
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>  --
>>>> >>>>> You received this message because you are subscribed to the Google
>>>> >>>>> Groups
>>>> >>>>> "Algorithm Geeks" group.
>>>> >>>>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >>>>> To unsubscribe from this group, send email to
>>>> >>>>> algogeeks+unsubscr...@googlegroups.com.
>>>> >>>>> For more options, visit this group at
>>>> >>>>> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>>>>
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>> --
>>>> >>>> Regards,
>>>> >>>> Kamakshi
>>>> >>>> kamakshi...@gmail.com
>>>> >>>>
>>>> >>>> --
>>>> >>>> You received this message because you are subscribed to the Google
>>>> >>>> Groups
>>>> >>>> "Algorithm Geeks" group.
>>>> >>>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >>>> To unsubscribe from this group, send email to
>>>> >>>> algogeeks+unsubscr...@googlegroups.com.
>>>> >>>> For more options, visit this group at
>>>> >>>> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>>>
>>>> >>>
>>>> >>>  --
>>>> >>> You received this message because you are subscribed to the Google
>>>> >>> Groups
>>>> >>> "Algorithm Geeks" group.
>>>> >>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >>> To unsubscribe from this group, send email to
>>>> >>> algogeeks+unsubscr...@googlegroups.com.
>>>> >>> For more options, visit this group at
>>>> >>> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Tushar Bindal
>>>> >> Computer Engineering
>>>> >> Delhi College of Engineering
>>>> >> Mob: +919818442705
>>>> >> E-Mail : tushicom...@gmail.com
>>>> >> Website: www.jugadengg.com
>>>> >>
>>>> >> --
>>>> >> You received this message because you are subscribed to the Google
>>>> Groups
>>>> >> "Algorithm Geeks" group.
>>>> >> To post to this group, send email to algogeeks@googlegroups.com.
>>>> >> To unsubscribe from this group, send email to
>>>> >> algogeeks+unsubscr...@googlegroups.com.
>>>> >> For more options, visit this group at
>>>> >> http://groups.google.com/group/algogeeks?hl=en.
>>>> >>
>>>> >>
>>>> >
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups
>>>> "Algorithm Geeks" group.
>>>> To post to this group, send email to algogeeks@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> algogeeks+unsubscr...@googlegroups.com.
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/algogeeks?hl=en.
>>>>
>>>>
>>>
>>>
>>> --
>>> Tushar Bindal
>>> Computer Engineering
>>> Delhi College of Engineering
>>> Mob: +919818442705
>>> E-Mail : tushicom...@gmail.com
>>> Website: www.jugadengg.com
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>
>>
>>
>> --
>> Prashant Gupta
>> B.Tech Final Year
>> Computer Science and Engineering
>> NIT Trichy
>> Phone : +91 9894462744
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to