繁体   English   中英

在C中返回本地指针

[英]Returning a local pointer in C

const char* returnStr()
{
    char time[40] = {"France"};
    char* time1;

    time1 = time;

    return time1;
}

int main(int argc, char* argv[])    {
    printf ("return String is %s\n",returnStr());
}

此代码返回一些垃圾字符。 const char*是否不足以返回本地char指针? 我也必须在函数中使用静态方法吗?

我也必须在函数中使用静态方法吗?

是。 const只是返回值的限定符,向returnStr调用者returnStr信号, returnStr他们不应修改函数的结果。 它不会更改time的临时字符。

当returnStr函数终止时,将释放其堆栈帧-因此,任何本地指针指向的内容现在都是随机数据。 如果要返回指针,则必须在堆上分配指针,例如malloc。

time对象将仅存在,直到returnStr运行。 一旦返回调用它的函数,它就消失了,指向它的任何指针都是无效的。 简而言之,在C语言中,您无法从函数返回数组,只能返回指向一个数组的指针。 这就是为什么标准库C函数根本不分配字符串的原因,您必须传递一个字符串并指定它的大小,它将填充它或出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM