函数的返回值是指针

函数返回值是指针的,不能返回函数内部的局部变量的地址,因为函数内部的局部变量在函数运行结束后生存期结束;

例如:

int* func()
{
    int value;
    return &value;//这样是错误的
}

以上value是局部变量,函数结束后,变量生存期结束,不能返回该变量地址。

有三种情况可以避免这种情况:

1、返回的是函数形参的地址

例如:

int* func(int value)
{
    return &value;
}

2、返回的是函数形参,且形参是指针类型

int* func(int *value)
{
    return value;
}

3、函数中局部变量声明为static类型

int* func()
{
    static int value = 1;
    return &value;
}

声明为static的话,value的生命周期为整个程序的生命周期,故可以返回其地址。

4、函数中局部变量是指针类型

char* func()
{
    char* value = "hello world";
    return value; 
}
发布了25 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/modi000/article/details/103398721