4
#include <stdio.h>

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

  int arr[a];

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

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

4

1 回答 1

6

是的,这称为可变长度数组。自 C99 以来,它一直是 C 中的标准。

所以不,不应该在编译时为这样的代码分配内存。那当然是不可能的。

此外,类型的值size_t(如sizeof运算符生成的值)应使用%zu.

于 2016-05-12T15:26:36.820 回答