C语言中的返回值

| 例子1

错误代码演示:

int* getX(){
     int x = 1;
        
     return &x;
}

说明:方法内部的局部变量会在方法被调用之后,被销毁,即:他的存储空间会被释放。所以像这个例子中的做法不会报错但是不建议,因为x的地址到了方法外面就不好使了。

那么如果程序中我们就需要这样做的时候因该怎么办呢?

方法是将x定义为静态的,即:static int x = 1;因为静态变量跟全局变量一样,程序运行期间都不会被销毁,存储空间在程序运行期会一直存在,所以就算方法调用之后该变量

的地址任然有效。

下面是正确的代码:

int* getX(){
    static int x = 1;

    return &x;
}