@ puneet : ryt !! gud explanation. On Sat, Aug 6, 2011 at 6:53 PM, Puneet Gautam <puneet.nsi...@gmail.com>wrote:
> 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. > > -- 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.