All compilers I've used do it in that way and it's right if You think. What value do You expect to receive from &array_var ? If You've : char foo[N]; You've a zone in memory that can be seen as "char *" but does not exist a variable that hold such value, so You can't do &... of a thing that does not exist ! A trick can be : char foo[N]; char * fooptr = foo; ... set(N, &fooptr); ... Davide. -- Feel free, feel Debian !