int *mysub ();
main() {
int* x;
x = mysub();
printf("in main x = %d\n", *x);
*x = 5;
x = mysub();
}
int *mysub () {
int z;
printf("in sub z = %d\n", z);
z = 3;
return &z;
}
####
$ make temp
gcc temp.c -o temp
temp.c: In function `mysub':
temp.c:13: warning: function returns address of local variable
####
$ temp
in sub z = 0
in main x = 3
in sub z = 5
####
use strict;
my $x;
$x = &mysub;
printf "in main \$x = %d\n", $$x;
$$x = 5;
$x = &mysub;
sub mysub () {
my $z;
printf "in sub \$z = %d\n", $z;
$z = 3;
return \$z;
}
####
$ perl temp.pl
in sub $z = 0
in main $x = 3
in sub $z = 0
####
int *mysub () {
static int z;
...