首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关函数返回指针的有关问题

2012-12-16 
有关函数返回指针的问题看到一个题目,不知道如何解答有两个返回指针,看下是否有问题char *fun1(){char ch1

有关函数返回指针的问题
看到一个题目,不知道如何解答
有两个返回指针,看下是否有问题
char *fun1()
{
char ch1[10];
return ch1;
}
char *fun2()
{
char *ch1;
ch1 = new char[10];
return ch1;
}
[最优解释]
第二个没有问题,第一个有问题,返回的是栈地址,随时会被其它代码改写数据。
[其他解释]
第一个有问题:返回了局部变量。
第二个没问题:在堆栈申请了空间。不过记得释放。
[其他解释]

引用:
看到一个题目,不知道如何解答
有两个返回指针,看下是否有问题
char *fun1()
{
char ch1[10];
return ch1;
}
char *fun2()
{
char *ch1;
ch1 = new char[10];
return ch1;
}


静态分配的内存和动态分配的内存 是不在相同区域的....也就是说生成期 不一样....动态分配的那个能生成到程序结束...而那个静态分配的...离开{}后就被释放了...也就是堆栈区域的.会被释放..而那个动态分配在堆区域的..暂时不会被释放...暂时不用管啥 堆啊..栈啊.啥的..就知道他俩存活期不一样就好了..
[其他解释]
我也对类似的问题感到疑惑。
[其他解释]
不能返回指向 stack 的指针变量 
[其他解释]
指针问题还是比较疑惑
[其他解释]
引用:
引用:看到一个题目,不知道如何解答
有两个返回指针,看下是否有问题
char *fun1()
{
char ch1[10];
return ch1;
}
char *fun2()
{
char *ch1;
ch1 = new char[10];
return ch1;
}

静态分配的内存和动态分配的内存 是不在相……
感觉你的话就有问题,在栈区的变量空间也不能说是静态分配的把?
[其他解释]
第一个明显有问题,局部变量是在栈上的,函数结束后就会释放,之后调用者拿到的就是一个无效指针
[其他解释]
引用:
引用:引用:看到一个题目,不知道如何解答
有两个返回指针,看下是否有问题
char *fun1()
{
char ch1[10];
return ch1;
}
char *fun2()
{
char *ch1;
ch1 = new char[10];
return ch1;
}
……



对对... 指导的对....水平有限...尚需努力
[其他解释]
其实就是是否属于 悬垂指针 的问题。
悬垂指针 就是无效的指针。

热点排行