a)如果函数定义没有返回值,函数调用时不能写void关键字,调用函数时也不能接收函数的返回值。

    1. // 函数的定义
    2. void test()
    3. {
    4. }
    5. int main()
    6. {
    7. // 函数的调用
    8. test(); // right
    9. void test(); // error, void关键字只能出现在定义,不可能出现在调用的地方
    10. int a = test(); // error, 函数定义根本就没有返回值
    11. return 0;
    12. }

    b)如果函数定义有返回值,这个返回值我们根据用户需要可用可不用,但是,假如我们需要使用这个函数返回值,我们需要定义一个匹配类型的变量来接收。

    1. / 函数的定义, 返回值为int类型
    2. int test()
    3. {
    4. }
    5. int main()
    6. {
    7. // 函数的调用
    8. int a = test(); // right, a为int类型
    9. int b;
    10. b = test(); // right, 和上面等级
    11. char *p = test(); // 虽然调用成功没有意义, p为char *, 函数返回值为int, 类型不匹配
    12. // error, 必须定义一个匹配类型的变量来接收返回值
    13. // int只是类型,没有定义变量
    14. int = test();
    15. // error, 必须定义一个匹配类型的变量来接收返回值
    16. // int只是类型,没有定义变量
    17. int test();
    18. return 0;
    19. }