Order is important ... but in the main case here which is 1) struct list { int data; list *next; } and 2) struct list { list *next; int data; } order is not affecting its size...!!
On 8/6/11, Puneet Gautam <puneet.nsi...@gmail.com> wrote: > 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.