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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.