C语言中整型数组的每个元素在内存中是怎么存放的

C语言中整型数组的每个元素在内存中是如何存放的
各位大神,我是初学者,请求帮忙解决一个小问题:
int  arry[5={1,2,3,4,5};
printf("%d\n",strlen(arry));
输出结果是1;
我在网上搜索说是 arry[0]占4个字节:0x01 0x00 0x00 0x00   
那么strlen(arry)从0x01读起,到0x00就停止,于是返回长度1,
1在内存中的二进制不是00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01吗?
那不就是0x00 0x00 0x00 0x01,为什么是上面那样?(关键是这里帮我解释清楚一点)
求大神解释一下

------解决思路----------------------
还涉及一个大小端的问题
对于小端
内存中存储的 1 是逆序的按照 
0x01 0x00 0x00 0x00存储 

这里的数组arr内存数据是 
0x01 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x05 0x00 0x00 0x00 
所以strlen返回 1
------解决思路----------------------
数组是存储在堆栈中,也就是先进后出的存储模式。
那个为什么返回是1,可以形象理解为:本来strlen是从头找道脚的,二数组的首地址是放到脚上的,strlen就只有从脚找到脚了,也就是一个单位,返回为1了
------解决思路----------------------
C语言中整型数组的每个元素在内存中是怎么存放的理解讨论之前请先学会如何观察

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
C语言中整型数组的每个元素在内存中是怎么存放的多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)