從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()工作得很好,返回指向本地對象的指針與對象本身似乎有很大的區別。有人能說明一下這個問題嗎?提前謝謝!
從C中的函數返回局部變量
慕的地6264312
2019-06-06 10:41:15