don't think C supports that either. Mostly because whether to allocate at runtime or at compile time is not part of the standard, and so would be implimentation dependent. Some applications may not support dynamic memory allocation (its part of the libraries not the language itself). I know there are some microcontrollers where this would be an difficult issue.
try this instead -
Code:
#include <stdlib.h>
int main(int argc, char* argv[]){
int i = atoi(argv[1]);
char* c = (char*)malloc(sizeof(char) * i);
return 0;
}