2013-06-20 4 views
-4

Эта программа сбой. Есть ли какой-либо предел в C с использованием массива n length? Он работает на C++ (используя cin cout). Спасибо за ваше время.Массивы переменной длины в C и C++

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    int n; 
    printf("n\n"); 
    scanf("%d\n",n); 
    int arr[n]; 
    system("PAUSE"); 
    return 0; 
} 
+0

Насколько велика ваша цифра? – Mysticial

+1

@Mysticial Достаточно большой, чтобы не вписываться в память, к которой должен обращаться указатель wannabe-to -int, который является неинициализированным не указателем вместо этого ... –

+0

@Mysticial (это было сложно и запутанно ... он write 'scanf ("% d ", n);') –

ответ

6

Ваш код имеет еще одну проблему:

scanf("%d\n", n); 
//   ^^ 
// should be &n 

scanf ожидает указатель, в то время как вы передаете int.

1

Как я указал в другом ответ на моем see here

, что при использовании scanf() следует избегать использования других, чем спецификаторы формата, как (%d или %s), потому что, когда вы пишете любую вещь в зсапе в кавычках он ожидает символов вы должны ввести эту часть точно так, как она есть, что очень проблематично специально для новичков.

И самое главное ошибка в ответе заключается в следующем:

scanf("%d",n) 
     ^

Вы должны передать адрес переменной, для которой вы хотите принять вход поэтому он должен быть &n.