返回C语言的本地指针

  • 本文关键字:指针 语言 返回
  • 更新时间 :
  • 英文 :

const char* returnStr()
{
    char time[40] = {"France"};
    char* time1;
    time1 = time;
    return time1;
}
int main(int argc, char* argv[])    {
    printf ("return String is %sn",returnStr());
}

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

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

是的。const只是返回值上的限定符,向returnStr的调用者发出信号,告诉他们不应该修改函数的结果。不改变time的临时字符

当returnStr函数终止时,它的堆栈帧被释放-因此任何本地指针指向的现在都是随机数据。如果你想返回一个指针,你必须在堆上分配它,例如使用malloc。

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

最新更新