c语言没有明确指明函数类型,关于C语言的main函数

最近回看了一本C语言方面的书,准备复习一下C语言的基础知识,正如大多数C语言课本一样,第一个例子总是简单的"Hello World",如下:

main()

{

printf("Hello World!\n");    //输出字符串并换行

}

现在再看这个例子,就会发现有几个问题。首先,C语言中每个函数都会返回值,包括空类型。上面的例子中,虽然没有指明main函数的返回值类型,编译器会使用默认的空类型作为返回值。但是,这显然会给初学者造成疑惑,是不是所有函数都可以这样写,表示没有返回值呢?对于这个简单的例子,应该改写如下:

void main()

{

printf("Hello World!\n");    //输出字符串并换行

return (void);

}

上面代码显示的告诉编译器,main函数的返回值类型会void型,并显示调用return语句。这样的好处就是统一各函数的书写风格,符合C语言的规范。

众所周知,main函数是程序的入口函数,是由系统调用的,在Win32中则是由C Runtime的Startup代码调用的。虽然整个程序中也不会用到main函数的返回值,但是我们不能确定系统在调用main后会不会使用该返回值。例如,当我们调用CreateProcess创建一个进程时,系统会调用指定程序的main函数,当程序退出时,再调用GetProcessExitCode函数获取该程序的返回值,以判断程序是否执行成功,这里,系统就会将main函数的返回值返回给我们。正如上面的例子所示,main函数返回的是空类型,那它是什么值呢?

也许系统会返回一个随机的值给我们,但是我们也就不能判断这个程序执行是否成功了。所以,main函数的最好能够有一个明确的返回值,如int型,这也正是main函数的正确声明,如下:

int main()

{

printf("Hello World!\n");    //输出字符串并换行

if (...) //成功返回0

{

...

return err;

}

else

{

...

return err;   //出错返回错误码

}

}

可以举一反三的是,在写自定义函数时,最好也能够指定一个返回值,表明程序是否执行正确,在这一点上Windows的API函数就是很好的例子,大多数API函数都会返回一DWORD值,表明函数是否执行成功,而数据的传递都是通过参数进行的,包括输入、输出参数,而返回值值表明是否执行成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值