c中的exit()函数的作用,是退出程序还是跳出函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c中的exit()函数的作用,是退出程序还是跳出函数?相关的知识,希望对你有一定的参考价值。

在main函数中我们通常使用return (0);这样的方式返回一个值。

  但这是限定在非void情况下的也就是void main()这样的形式。

  exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。

  但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1) #include <iostream>
#include <string>
using namespace std;

int main()

exit (1);//等价于return (1);
参考技术A exit()函数是出口标志。跟return差不多。所以是跳出函数 参考技术B 哎~~来晚了,楼上的已经回答的很清楚了,是跳出函数

C语言中的那些库函数(持续更新中)

1.【exit()】

        exit是在调用处强行退出程序,运行一次程序就结束。exit(0)表示正常退出。exit(1)表示异常退出,这个1是返回给操作系统的。无论是写在main函数中,还是在其他函数中,都是程序退出。一般都是认为0是正常退出、其他数字是异常退出。所在的头文件是stdlib.h.  返回值的意义其实同main函数中的return一样,零表示正常,非零表示异常。

2.【memset】

函数的声明为:memset(void *, int, size_t n)。功能是将void *所指向的某一块内存(大小由size_t指定,可以使用sizeof函数计算)中的首n个字节的内容全部设置为int值。这个函数通常为新申请的内存做初始化工作。而如果是在链表中,当我们申请一个新的节点,也会使用这个函数来初始化这个节点。示例代码如下:

#include "stdio.h"
#include "string.h"

int main(int argc,const char* argv[]){

    char str[] = "abcde";
    printf("%s\n",str);
    memset(str, 0, strlen(str));
    printf("%s\n",str);

    return 0;
}

打印结果如下:
技术分享

可以看到其实是把数组置空了,而不是把数组里面的元素每个置为0.

#include "stdio.h"
#include "string.h"

int main(int argc,const char* argv[]){

    char str[] = "abcde";
    printf("%s\n",str);
    memset(str, ‘0‘, strlen(str));
    printf("%s\n",str);

    return 0;
}
打印结果如下:

技术分享

在这里是把数组中的元素都替换为字符‘0’。


【3.malloc】

       需要包含头文件stdlib.h。函数声明为 void *malloc(int size). malloc向系统申请分配size个字节的内存空间。返回类型为void *类型。void*表示未确定类型的指针。可以强制转换为任何其他类型的指针,如果不进行类型转换就会报错。malloc只是进行分配内存,并没有对内存进行初始化,所以得到的一片新内存中,值将是随机的。

示例代码如下:

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main(int argc,const char* argv[]){

    char *p;

    p = (char *)malloc(sizeof(char));
    if(p)
        printf("内存分配地址: 0x%x\n",p);
    else
        printf("分配内存失败!\n");
    free(p);

    return 0;
}

打印结果如下:

技术分享

上面的代码中我其实只是分配了一个char字符的空间。如果想要n个字符,直接如下:(char *)malloc(n * sizeof(char))即可。


【4.sizeof】

计算空间的字节数。可以对数据类型、变量进行计算。实际上,sizeof计算对象的大小也是转换成对其对象类型的计算。也就是说,同种类型的不同对象其sizeof值都是一致的。示例代码如下:

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main(int argc,const char* argv[]){


    int a[10];
    //因为每个int型占用4个字节
    printf("数组占用字节:%d\n",sizeof(a));

    printf("char占用字节:%d,int占用字节:%d,double占用字节:%d\n",sizeof(char),sizeof(int),sizeof(double));

    int *p;
    //可以看到,在这里一个指针占8个字节
    printf("指针占用字节:%d\n",sizeof(p));

    char *str1 = "abcde";
    //这里打印的也是一个指针,注意char是我们编程能用的最小数据类型
    printf("字符串1占用字节 :%d\n",sizeof(str1));

    char str2[] = "iiii";
    //这里打印数组的长度
    printf("字符串2占用字节:%d\n",sizeof(str2));

    return 0;
}

打印结果如下:

技术分享



















以上是关于c中的exit()函数的作用,是退出程序还是跳出函数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中的那些库函数(持续更新中)

如何从主函数外部提前退出 Rust 程序?

程序代码中退出函数exit()与返回函数return ()的区别

C语言中的exit函数

python中exit()函数怎么不能退出进程?

delphi ---break,exit,continue等跳出操作的区别