C中的数组创建语法

时间:2016-01-28 00:25:36

标签: c arrays syntax

以下两种在C语言中创建数组的方法是什么?

int main( void )
{
    int *array = malloc(sizeof(int) * 10);
    int array2[10];
}

我的想法是方法二是方法一的语法糖,但我不确定。

此外,在这些声明之后,array和array2包含了什么?我知道数组是一个指向数组开头的指针,但是数组初始化为什么?对于array2怎么样?

1 个答案:

答案 0 :(得分:5)

它们不是远程等效的。这样:

int *array = malloc(sizeof(int) * 10);

将分配堆的内存块,并为您提供指向该内存的指针。

此:

int array2[10];

将在堆栈上分配一些内存。阅读关于堆栈和堆内存的优秀答案:What and where are the stack and heap?