【问题标题】:Need help creating a Variable length Array需要帮助创建可变长度数组
【发布时间】:2016-09-29 18:39:24
【问题描述】:
#include<stdio.h>

int main()
{
    int row, col;
    printf("Enter rows and columns for your grid");
    scanf_s(" %i%i", &row, &col);
    int Array[row][col];
    return 0;
}

这是我的编程老师给我们的示例,但我无法让它发挥作用。我的编译器 (Visual Studio 2015) 不断给我错误 C2131 “表达式未计算为常量” 有什么办法可以使它工作吗?

【问题讨论】:

  • 如果你可以选择编译器(你可能会这样做,因为你的导师不太可能给你一个你应该使用的编译器不支持的例子)然后使用 gcc
  • MSVC 不支持变长数组。
  • 使用符合标准的现代编译器,如 gcc 或 clang。

标签: c arrays variables visual-studio-2015 global


【解决方案1】:

VLA 是 C99 功能,而 MSVC 支持 C89。根据MSDN documentation for VS 2015:

Visual C++ 目前不支持可变长度数组。

【讨论】:

  • VS2015是这样吗?
  • @EugeneSh.: 该链接适用于 VS 2015。
  • 嗯。那么页面上的代码说明了什么?
  • @EugeneSh。使用支持可变长度数组的编译器(如 gcc)。可能不会是最后一次教练在 VS 和 gcc 之间做不同的事情
【解决方案2】:

您必须使用 malloc 进行动态内存分配

int **Array;
Array = malloc(sizeof(int*)*row);
for(int i=0;i<row;i++)
Array[i] = malloc(sizeof(int)*col);

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 2011-03-08
    • 2020-03-06
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多