在C语言中为数组分配内存

4
#include <stdio.h>

int main(void)
{
  int a=17;
  scanf("%d",&a);

  int arr[a];

  printf("%lu", sizeof(arr));
}

数组“arr”的内存应该在编译时分配,但在这种情况下,它从用户(运行时)获取值“a”,并为数组分配相同大小的内存。请澄清。

1个回答

6
是的,这被称为变长数组。自C99以来,在C语言中已成为标准。
所以,对于这样的代码,内存不应在编译时分配。当然这是不可能的。
另外,像sizeof操作符生成的size_t类型的值应该使用%zu进行打印。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接