Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Just in case people don't know about C. This is a short piece of code where an array is returned from a function.

    typedef struct {int v[4];} Vec;
    Vec get_vec(void){return Vec {3,2,1,0};}
Edit: alas, I've been writing too much C++. The following is correct C.

    typedef struct {int v[4];} Vec;
    Vec get_vec(void){Vec v={{3,2,1,0}}; return v;}


Now do an array whose size is not known at compile time.


Yeah, there is nothing complicated about returning a static array in C.

C is a much simpler language than many people assume -- of course, it can get really hairy and complicated especially when you need to do dynamic memory management, but that's not what the GP was asking for in this case.


> that's not what the GP was asking for in this case.

You really think that when they mentioned the dynamically allocated `Vec` in Rust (which has fixed-sized arrays) and "manual memory management" in C, what they were actually talking about was a static array?


But you need dynamic memory management for side-effect-free functional programming.


In C99 or later you can also write it as:

    Vec get_vec(void) {
        return (Vec){ { 3, 2, 1, 0 } };
    }
...or I would probably prefer designated init to make the initialization a bit clearer:

    Vec get_vec(void) {
        return (Vec){ .v = { 3, 2, 1, 0 } };
    }




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: