从C中的函数返回局部变量#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编译器为foo 2()和foo 3()发出警告消息:warning: function returns address of local variable我认为它不允许返回局部变量,但是foo 1()工作得很好,返回指向本地对象的指针与对象本身似乎有很大的区别。有人能说明一下这个问题吗?提前谢谢!
3 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
malloc()
free()
malloc()
偶然的你
TA贡献1841条经验 获得超3个赞
foo1()
SMILET
TA贡献1796条经验 获得超4个赞
- 3 回答
- 0 关注
- 602 浏览
添加回答
举报
0/150
提交
取消