学点 C 语言(32): 函数 - 返回值

允我心安 提交于 2020-03-05 00:07:18

C 语言的函数可以返回数组以外(不包括数组指针)的任何类型.

不写明返回类型, 在以前的 C 语言版本中是默认返回 int, 现在 C99、C++ 已不支持.

void 表示没有返回值, 也就无须 return 语句; 如果是其他语句必须有 return 语句.

在 main 函数中(只是 main 函数)若忘掉 return, 有些编译器会自动添加 return 0;

1. 每执行 return 语句函数将会退出:
#include <stdio.h>

int main(void)
{
    printf("111\n"); 
    printf("222\n");

    return 0; /* 之后的语句将不会执行 */

    printf("333\n");
    printf("444\n");
    
    getchar();
    return 0;
}


2. 如果函数没有返回值, 可以借无参数的 return 跳出:
#include <stdio.h>

void prn(void);

int main(void)
{
    prn();
    getchar();
    return 0;
}

void prn(void) {
    printf("111\n"); 
    printf("222\n");

    return; /* 无参数的 return */

    printf("333\n");
    printf("444\n");
}


3. return 后面不是"等号", 但返回值也可以写在括号中:
#include <stdio.h>

long long MySqr(int x);

int main(void)
{
    int i = 9;

    i = MySqr(i);
    printf("%d\n", i);
    
    getchar();
    return 0;
}

long long MySqr(int x) {
    return(x*x); /* 返回值在括号中 */
}


4. return 与 exit 的区别:

main 函数结束时, 程序也就结束了, return 0; 或 return(0); 返回给系统的 0 表示正常退出.
如果返回了非零的值, 一般写做: return 1; 或 return(1); 表示异常结束.

在一般函数中 return 只是退出当前函数;
但在任何地方, exit(1); 都是退出程序, 其中的 1 也是给系统的返回值, 表示异常退出;
异常退出也可以使用 abort(); 这个两个函数(exit、abort)都声明在 stdlib.h
#include <stdio.h>
#include <stdlib.h>

void prn(void);

int main(void)
{
    prn();
    getchar();
    return 0;
}

void prn(void) {
    printf("abc\n"); 
    exit(1);         /* 异常退出程序 */
}


5. 每执行 return 语句函数将会退出:
#include <stdio.h>

int main(void)
{
    printf("111\n"); 
    printf("222\n");

    return 0; /* 之后的语句将不会执行 */

    printf("333\n");
    printf("444\n");
    
    getchar();
    return 0;
}


6. 注意返回值的类型:
#include <stdio.h>

float average(int a, int b, int c);

int main(void)
{
    printf("%g\n", average(2,6,9));
    
    getchar();
    return 0;
}

float average(int a, int b, int c) 
{
    return (a + b + c)/3.0; /* 假如这里没有 .0 将不会返回正确的结果*/
}


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!