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.