指针可以实现数组的所有功能,为什么要发明数组呢?
- 为了写代码方便,不用每次malloc申请内存,由编译器自动完成?
- 效率更高?
效率更高是因为有看一篇文章有这方面的描述,原文地址
## 数组 ##
int main()
{
int foo[] = {1};
int bar = 1;
return 0;
}
## 反编译后 ##
mov DWORD PTR [esp+8], 1
mov DWORD PTR [esp+12], 1
## 指针 ##
#include <stdlib.h>
int main()
{
int *foo = (int *)malloc(sizeof (int));
*foo = 1;
return 0;
}
## 反编译后 ##
mov DWORD PTR [esp], 4
call _malloc
mov DWORD PTR [esp+28], eax
mov eax, DWORD PTR [esp+28]
mov DWORD PTR [eax], 1
可能有不一样的地方啊,效率和使用方式的难易等等,你这个问题更多的应该从"人"的角度去思考,你说既然哟汇编语言了,为什么还要搞个c语言,其实一切都是为了能方便使用、便于理解、提高效率,从而来降低"人"的成本