• 【码蹄集新手村 600 题】判断俩个矩阵是否相等,以及 exit 与 return 的区别


    题目链接:

     

    解题思路:

    • 1.   exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束

    exit(0)表示进程正常退出. 返回 0;

    exit(1)表示进程非正常退出. 返回 1.

    • 2.    exit与return的区别

    exit()函数与return语句的最大区别在于,

    调用exit()函数将会结束当前进程,

    同时删除子进程所占用的内存空间,把返回信息传给父进程。

    当exit()中的参数为0时,表示正常退出,其他返回值表示非正常退出,

    执行exit()函数意味着进程结束;

    而return仅表示调用堆栈的返回,

    其作用是返回函数值,并且退出当前执行的函数体,返回到函数的调用处,

    在main()函数中, return n和exit(n)是等价的。

    举例说明:

    • return 示例 :

    1. //return示例1:
    2. int print()
    3. {
    4. int n;
    5. n = 0;
    6. printf("使用return来结束循环\n");
    7. while(1)
    8. {
    9. if(9==n)
    10. return n;
    11. n++;
    12. }
    13. return 0;
    14. }
    15. void main(void)
    16. {
    17. int ret;
    18. printf("调用print()函数之前\n");
    19. ret = print();
    20. printf("print()函数的返回值ret=%d\n",ret);
    21. printf("调用print()函数之后\n");
    22. return ;
    23. }
    24. /*运行结果:
    25. 调用print()函数之前
    26. 使用return来结束循环
    27. print()函数的返回值ret=9
    28. 调用print()函数之后
    29. 在上面的代码中,用return语句来退出while死循环,
    30. 在main()函数中print()函数的调用处将返回值赋给ret,
    31. 打印输出后可以看到使用return语句成功地返回了9。*/

    • exit 示例:

    1. exit示例2
    2. void print()
    3. {
    4. int n;
    5. n = 0;
    6. printf("使用exit来结束循环\n");
    7. while(1)
    8. {
    9. if(9==n)
    10. exit(1);
    11. n++;
    12. }
    13. return ;
    14. }
    15. void main(void)
    16. {
    17. int ret;
    18. printf("调用print()函数之前\n");
    19. ret = print();
    20. printf("print()函数的返回值ret=%d\n",ret);
    21. printf("调用print()函数之后\n");
    22. return ;
    23. }
    24. /*运行结果:
    25. 调用print()函数之前
    26. 使用exit来结束循环从以上代码可以看出,
    27. 如果执行exit()函数后能够返回到main()函数的调用处,
    28. 那么可以打印出接下来的信息“调用print()函数之后”,
    29. 但是运行结果表明在调用exit()函数之后没有任何输出,
    30. 所以执行exit()函数之后将直接结束整个程序的运行。*/

    参考代码:

    1. #include
    2. using namespace std;
    3. int main( )
    4. {
    5. int arr1[4][4] = {0};
    6. int arr2[4][4] = {0};
    7. for(int i = 0;i < 4;i++)
    8. {
    9. for(int j = 0;j < 4;j++)
    10. {
    11. cin >> arr1[i][j];
    12. }
    13. }
    14. for(int i = 0;i < 4;i++)
    15. {
    16. for(int j = 0;j < 4;j++)
    17. {
    18. cin >> arr2[i][j];
    19. }
    20. }
    21. for(int i = 0;i < 4;i++)
    22. {
    23. for(int j = 0;j < 4;j++)
    24. {
    25. //cin >> arr2[i][j];
    26. if(arr1[i][j] != arr2[i][j])
    27. {
    28. cout << "NO" << endl;
    29. exit(0);//参数为 0 表示程序正常退出
    30. }
    31. }
    32. }
    33. cout << "YES" << endl;
    34. return 0;
    35. }

  • 相关阅读:
    世和基因NGS大Panel IVD产品获批上市
    动态内存管理
    前后端交互案例分析
    java毕业设计校园快递代领系统mybatis+源码+调试部署+系统+数据库+lw
    子树的大小
    线上展厅优势
    我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
    uboot移植之DDR初始化参数更改说明
    vim编辑器 用法
    昇思25天学习打卡营第15天 | Vision Transformer图像分类
  • 原文地址:https://blog.csdn.net/m0_64075307/article/details/126410210