Re: pass a local variable to a function
Bert Wesarg <[email protected]>
| Newsgroups | org.kernel.vger.linux-c-programming |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Mar 25, 2009 at 17:21, 明亮 <[email protected]> wrote: > Hi guys, > > This is my first email in this list, any help is much appreciated. > As I know, it's not allowed to pass a local variable to a function, > because the stack where local variable resides will be reused by other > functions. > eg: > 1 #include <stdio.h> > 2 > 3 char *fetch(); > 4 > 5 int main(int argc, char *argv[]){ > 6 char *string; > 7 string = fetch(); > 8 printf("%s\n", string); > 9 exit(0); > 10 } > 11 > 12 char *fetch(){ > 13 char string[10]; > 14 scanf("%s", string); > 15 return string; > 16 } > > When the application is executed, after input "a", it will produce > unknown characters, like "8Šè¿ôÿO". Which is like what I expect > > However, if I change line 13 to: > 13 char string[1024]; > > When I type "a", it echos "a", which is out of my expectation > > Why does it behave like this? That is irrelevant. What you try to do is 'undefined behavior', so you should have no expectations, whether it works for you or not. Bert > > Thanks in advance, > longapple