我们已经知道,数组存放一组数据类型相同的变量,各个变量连续存放,地址由低到高。
如整形数组:
1 | int s[5]={1,2,3,4,5}; |
有5个元素。
对应有汇编码:
1 | int s[5]={1,2,3,4,5}; |
可以看到5个元素有5条mov指令对每个元素进行初始化,地址从低到高,其中ebp是main的栈底,查看内存如下:
可以看到确实是连续存放的。
如果这样初始化呢?
1 | int s[5]={0}; |
看来编译器很是聪明,知道这个时候调用函数来完成初始化操作。当然如果不在声明时初始化数组,那么我们自己也可以直接:
memset(s,0,sizeof(s))