c++怎么跳出当前函数但不结束程序

江南重义,东吴尚德 2019-03-20 12:51:45
写了一个通讯录作业,里面有个联系人结构体分别有三个属性,删除联系人函数要求删除第i个联系人信息并返回联系人的信息,我写着发觉如果判断i不合法那么怎么返回信息,我用结构体定义了一个q,不赋值发现不能return q;原因是未初始化(我用的是2017版本的),于是就卡这里了,假如输入错误我怎么返回上级并继续执行下面的程序?
...全文
3167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
N阶魔方 2019-08-22
  • 打赏
  • 举报
回复
2楼正解
赵4老师 2019-08-22
  • 打赏
  • 举报
回复
跳出递归函数:
#include <iostream>
using namespace std;
struct MyStruct {
    int Nodedata;
    MyStruct *pLeft;
    MyStruct *pRight;
} s1,s2,s3,s4,s5,s6,s7,s8;
void ashow(MyStruct * p) {
    if (p != nullptr) {
        ashow(p->pLeft);
        ashow(p->pRight);
        cout << p->Nodedata << endl;
        if (p->Nodedata == 4) {
            throw 1;//退出递归.直接返回.
        }
    }
}
int main() {
    MyStruct *pRoot;//根

    pRoot = &s1;
    s1.Nodedata = 1;
    s2.Nodedata = 2;
    s3.Nodedata = 3;
    s4.Nodedata = 4;
    s5.Nodedata = 5;
    s6.Nodedata = 6;
    s7.Nodedata = 7;
    s8.Nodedata = 8;

    s1.pLeft = &s2;
    s1.pRight = &s3;

    s2.pLeft = &s4;
    s2.pRight = &s5;

    s3.pLeft = &s6;
    s3.pRight = &s7;
    try {
        ashow(pRoot);
    } catch (int err) {
        cout<<"catch err "<<err<<endl;
    }
    return 0;
}
//4
//catch err 1
//
冲水接着走 2019-08-22
  • 打赏
  • 举报
回复
遇到了同样的问题,我现在的解决方法是 在函数中抛出异常(这样不需要返回值) 在调用函数时首先进行try{}catch{},catch到异常的时候选择结束exit(), 然后下面再执行一次,给定返回值
try {
float target = line.DisranceToPlane(plane);
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
exit(1);
}

float target = line.DisranceToPlane(plane);
line.GetPoint(target, point);
return point.
  • 打赏
  • 举报
回复
引用 楼主 weixin_44803369 的回复:
写了一个通讯录作业,里面有个联系人结构体分别有三个属性,删除联系人函数要求删除第i个联系人信息并返回联系人的信息,我写着发觉如果判断i不合法那么怎么返回信息,我用结构体定义了一个q,不赋值发现不能return q;原因是未初始化(我用的是2017版本的),于是就卡这里了,假如输入错误我怎么返回上级并继续执行下面的程序?
那就进入函数就初始化q,如要退出函数的时候就return q;这个q是初始化过的,无意义的值,你只要判断返回的q是不是有意义的值,就可以判断函数执行是否成功。
sdghchj 2019-03-20
  • 打赏
  • 举报
回复
跳出函数就是用return 什么叫不能return q ??
Ineed12 2019-03-20
  • 打赏
  • 举报
回复
循环吗还是普通函数?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧