[英]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.