Hacker News new | comments | show | ask | jobs | submit login

The compiler doesn't pass any size information when you pass an array into a function. The function just gets a pointer. If you take the sizeof the array, you'll get the size of a pointer on your system:

[eric@rangely foo]$ cat foo.c

    #include <stdio.h>

    int test (int arr[10])
        printf ("%lu\n", sizeof (arr));
        return 0;

    int main (int argc, char *argv[])
        int arr[5];
        test (arr);
        return 0;
[eric@rangely foo]$ gcc foo.c -Wall -o foo && ./foo


(EDIT: fixed formatting)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact