2016-09-29 4 views
1
#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 «Выражение не оценивалось константой» Есть ли способ сделать эту работу?Нужна помощь в создании массива переменной длины

+0

Если у вас есть выбор составителей (которые вы, вероятно, сделать, так как это маловероятно, что ваш инструктор даст вам пример, который не поддерживается на компилятор вы должны использовать), а затем использовать GCC – Tibrogargan

+2

MSVC не поддерживает массив переменной длины. –

+0

Используйте современный, стандартный совместимый компилятор, такой как gcc или clang. – Olaf

ответ

0

Вы должны будете использовать динамическое выделение памяти с помощью malloc

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

The VLA является функция C99, в то время как MSVC поддерживает C89. Согласно MSDN documentation for VS 2015:

В Visual C++ в настоящее время не поддерживаются массивы переменной длины.

+0

Верно ли это для VS2015? –

+0

@EugeneSh .: Ссылка предназначена для VS 2015. –

+0

Hm. Итак, что демонстрирует этот код на странице? –

Смежные вопросы