day43.数组(第一节)

本文详细介绍了C语言中数组的应用场景及定义方法,并通过实例讲解了数组的初始化过程,包括数组长度为常量的要求及其对应的汇编代码表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第43节:数组(第一节)

1、什么时候要用到数组
比如:定义一个变量,用来存储一个年龄。
或者定义十个变量,用来存储十个人的年龄

注意:定义数组的时候数组的值必须是常量。否则编译器会报错。
定义数组例子:
      int age[10];


汇编代码:

00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,68h
00401016   push        ebx
00401017   push        esi
00401018   push        edi
00401019   lea         edi,[ebp-68h]
0040101C   mov         ecx,1Ah
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr [edi]


这个反汇编的代码中有一行是提升堆栈的值 lea         edi,[ebp-68h] ,就是这行,告诉我们需要使用多大空间的内存。所以在C语言里面数组定义的长度一定是常量。


2、数组的初始化:


例子:
int age[10]={1,2,3,4,5,6,7,8,9};


反汇编代码:
0040D408   mov         dword ptr [ebp-28h],1
0040D40F   mov         dword ptr [ebp-24h],2
0040D416   mov         dword ptr [ebp-20h],3
0040D41D   mov         dword ptr [ebp-1Ch],4
0040D424   mov         dword ptr [ebp-18h],5
0040D42B   mov         dword ptr [ebp-14h],6
0040D432   mov         dword ptr [ebp-10h],7
0040D439   mov         dword ptr [ebp-0Ch],8
0040D440   mov         dword ptr [ebp-8],9
0040D447   xor         eax,eax
0040D449   mov         dword ptr [ebp-4],eax


注意:数组的地址编号成员,每个地址都会差4,地址编号是从小到大的排列往下走。


如果你写成:int age[ ]={1,2,3,4,5,6,7,8,9}; 这样编译器也能识别你的数组的长度有多少,可以看如下汇编就明白了:


4:        int age[]={1,2,3,4,5,6,7,8,9};
0040D408   mov         dword ptr [ebp-24h],1
0040D40F   mov         dword ptr [ebp-20h],2
0040D416   mov         dword ptr [ebp-1Ch],3
0040D41D   mov         dword ptr [ebp-18h],4
0040D424   mov         dword ptr [ebp-14h],5
0040D42B   mov         dword ptr [ebp-10h],6
0040D432   mov         dword ptr [ebp-0Ch],7
0040D439   mov         dword ptr [ebp-8],8
0040D440   mov         dword ptr [ebp-4],9


以上就是数组初始化的两种方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值