【发布时间】:2012-09-14 17:14:27
【问题描述】:
可能重复:
Is array name a pointer in C?
C++ Static array vs. Dynamic array?
我正在学习 C,但我对以下两个数组之间的区别感到困惑:
int a[10];
和
int *b = (int *) malloc(10 * sizeof(int));
只是在最基本的层面上,这两者有什么区别?
【问题讨论】:
-
请注意,
int a[10];仅在声明位于文件范围内时才声明 静态 数组。 -
@DanielFischer 你是什么意思?你是说如果我在函数中有那一行,它就不会被称为 static 或者它不会做我想要的?
-
在一个函数中,它声明了一个自动存储持续时间的本地数组,而不是静态存储持续时间的数组(
static int a[10];将在块/函数范围内声明一个静态存储持续时间的数组)。我认为你被malloced 对象的常见误称“动态数组”误导了,static的技术含义不是上述意义上的“动态”的补充。 -
@DanielFischer 好的,这只是一个术语。谢谢