Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Declaring an array with a non-constant size variable [duplicate]

Tags:

arrays

c

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!

like image 468
Asher Saban Avatar asked Sep 28 '10 16:09

Asher Saban


1 Answers

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. :-)

like image 68
James McNellis Avatar answered Sep 23 '22 21:09

James McNellis