Hacker News new | ask | show | jobs
by jiggy2011 5277 days ago
upvoted for realloc trick
1 comments

This inspired me to write one that is even shorter and doesn't heap-allocate any memory at all. What can I say, I'm a sucker for minimal C.

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

  int main(int argc, char *argv[]) {
    int row = atoi(argv[1]);
    long data[row];
    for (int i = 0; i < row; i++) {
      data[i] = 1;
      for (int j = i - 1; j > 0; j--) data[j] += data[j - 1];
    }
    for (int i = 0; i < row; i++) printf("%ld ", data[i]);
    printf("\n");
    return 0;
  }
When did C start accepting non-constants for array size declarations?
I was wondering the same thing. But I can confirm it compiles and runs, though I had to supply a -std=c99 flag to gcc.
Ahhh, useful tip. I've just been using alloca instead...
Variable-length arrays were added in C99.
Best solution I've seen here so far.
If row is too big you can bust your stack frame when you define your data array.
True, though in this example integer overflow would happen first.
I think your code is off by 1.