c - Are the elements of an array guaranteed to be stored from lower to higher addresses? -


suppose have following array:

int list[3]={2,8,9}; printf("%p,%p,%p",(void*)&list[0],(void*)&list[1],(void*)&list[2]); 

is guaranteed &list[0]<&list[1]<&list[2] ?

i had assumed hard , fast rule while using c, have sure op asked me when answered question endianness

little endian or big endian

what gave me second thoughts stacks can grow or down issue.i not sure rigorous answers appreciated.thanks.

yes, it's guaranteed &list[0]<&list[1] , &list[1]<&list[2]. when pointers elements of same array compared, pointer element larger subscript considered have larger value. specified in c99 6.5.8@5:

pointers array elements larger subscript values compare greater pointers elements of same array lower subscript values

however, not guaranteed values printed printf %p follow same ordering - these values implementation-defined.


Comments