#include <stdio.h>
int foo1(void)
{
int p;
p = 99;
return p;
}
char *foo2(void)
{
char buffer[] = "test_123";
return buffer;
}
int *foo3(void)
{
int t[3] = {1,2,3};
return t;
}
int main(void)
{
int *p;
char *s;
printf("foo1: %d\n", foo1());
printf("foo2: %s\n", foo2());
printf("foo3: %d, %d, %d\n", p[0], p[1], p[2]);
return 0;
}
当我用编译器编译它时,gcc -ansi -pedantic -W -Wall
会发出 foo2() 和 foo3() 的警告消息:
warning: function returns address of local variable
我认为不允许返回局部变量,但 foo1() 工作正常,返回指向局部对象的指针和对象本身之间似乎存在巨大差异。
有人可以对这个问题有所了解吗?提前致谢!