C&C++在函数使用上的差异

本文对比了C语言与C++在函数定义和调用方面的差异,包括函数类型声明、参数传递方式及主函数特性等,并针对不同编译器进行了实测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C&C++在函数使用上的差异

Rains 2016/4/16 11:22:18

以下测试的GCC编译器是使用ubuntu14.0

VC编译器使用VC++6.0


程序

#include<stdio.h>

int a()
{
    printf("I am a.\n");
}

int b(void)
{
    printf("I am b.\n");
}

c()
{
    printf("I am c \n");

    return 0;
}

d(void)
{
    printf("I am d\n");
    return 1.1;
}

void main()
{
    a(1,2,3,65555555);
    b();
    //b(1);
    //b(1,2);
    c();
    d();
    printf("return c = %d\n",c());
    printf("return c = %d\n",d());

}

1、在GCC编译器下

1.1.测试C语言函数

当b(); 替换成b(1);后如下图

结论小结:
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数
(3)主函数可以为void
(测试过程中注意更改内容后要保存后再编译)

1.2测试C++函数

1.函数相同

2.无参数函数设置成int型

3.更改主函数为int 但是不添加return
    更改a();调用为无参数类型
    编译通过

结论小结:
1、c++函数不支持无类型声明的函数,必须显式声明类型
2、a();a(void);都不能带参数
3、主函数不能为void类型
问题
指明函数类型,但是不说明返回值,int char下返回8 原因?

2、在vc++6下

2.1测试c函数

1、vc6下一次编译通过

2、更改b();为b(1);      编译通过

小结:
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同
(3)主函数可以为void
(测试过程中注意更改内容后要保存后再编译)

2.2测试c++

1、一次不通过

warning C4508: 'c' : function should return a value; 'void' return type assumed
warning C4508: 'd' : function should return a value; 'void' return type assumed
error C2660: 'a' : function does not take 4 parameters

2、注释掉不带类型的c(); d();

error C2660: 'a' : function does not take 4 parameters

3、a();调用不带参数

error C4716: 'a' : must return a value
error C4716: 'b' : must return a value

4、在int a(); 后添加返回值        运行成功

小结:
1、C++语言不支持无类型,或者非void但无返回值的函数
2、f(); f(void); 都不支持传参
3、主函数可以为void

总结GCC

C语言
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数
(3)主函数可以为void
C++
1、c++函数不支持无类型声明的函数,必须显式声明类型
2、a();a(void);都不能带参数
3、主函数不能为void类型

总结VC6

C语言
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同
(3)主函数可以为void

C++
1、C++语言不支持无类型,或者非void但无返回值的函数
2、f(); f(void); 都不支持传参
3、主函数可以为void

问题?

指明函数类型,但是不说明返回值,int char下返回8 原因?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值