2010-03-29 3 views
5

я получаю ошибку «intitializer fails to determine size of 'K'» в строкеошибка: инициализатор не удается определить размер «K»

int K[]= new int[Vertices->total]; 

Как решить эту проблему?

+3

Вы должны решить, является ли вы программируете в 'C++ 'или' C', и, если это последнее, используете ли вы 'C99' или нет. –

+1

Lousy сообщение об ошибке. Какой компилятор вы используете? –

+1

@nobugz На самом деле, я думаю, что это разумное сообщение об ошибке. – 2010-03-29 08:18:21

ответ

18

Изменить

int K[]= new int[Vertices->total]; 

в

int *K = new int[Vertices->total]; 

1-ый один является Java способ создания массива, в котором K является ссылкой на целочисленный массив. Но в C++ нам нужно сделать K указателем на целочисленный тип.

+0

Thankx его работает, но могу ли я использовать тот же K для хранения массивов – smile

+1

@shiva Почти. Массивы в c действительно являются указателями на блоки памяти. поэтому, если вы хотите использовать K для управления массивом из целого числа, объявление будет «int K ** = new int * [ ' – sum1stolemyname

3

new int[Vertices->total] возвращает указатель, и, следовательно, int *K = new int[Vertices->total]; должен работать нормально.

Если вы знаете размер Vertices->total во время компиляции (т.е. CONSTANT), то вы могли бы использовать int K[Vertices->total]; // Выделяет память на стеке

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