tags:

views:

94

answers:

1

Hi

I'm studying for my test in C and I'm reading in a C summary I downloaded from some site. It is written that it is not allowed to write arr[i] where i is a variable. The only way to do it is with malloc.
However, I wrote the following code and it compiles without warnings and without error on valgrind:

    int index = 5;
    int a4[index];

    a4[0] = 1;
    a4[1] = 2;

    int index2;
    scanf("%d",&index2);
    int a5[index2];
    a5[0] = 1;
    a5[1] = 2;

So what is the truth behind array declarations? thank you!

+11  A: 

C99 allows variable length arrays to be created on the stack. Your compiler may support this feature. This features is not available in C89.

What the summary told you was true, from a certain point of view. :-)

James McNellis