关于C语言的main函数
2013-04-11 08:54
239 查看
最近回看了一本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值,表明函数是否执行成功,而数据的传递都是通过参数进行的,包括输入、输出参数,而返回值值表明是否执行成功。
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值,表明函数是否执行成功,而数据的传递都是通过参数进行的,包括输入、输出参数,而返回值值表明是否执行成功。
相关文章推荐
- 关于C语言的main函数
- 关于C语言中的main函数
- 关于C语言中的main函数的一点说明
- C语言中关于对目录的操作
- C语言关于字符串操作的安全问题
- 关于C语言的printf("%d,%d,%d,%d\n",a,++a,a--,a--);
- 12个关于C语言的有趣问答
- C语言中main函数的研究,以及对代码断点调试的研究(王爽老师 汇编语言)
- [C专家]分析C语言声明——关于联合
- 关于链表的C语言实现(中级)
- C语言关于文件操作
- Linux下C语言main函数的原型
- 关于c语言代码的规范(后期会更新)
- 关于C语言和汇编语言相互嵌套调用
- 关于C语言指针和数组的深入探讨
- C语言学习趣事_关于指针转换
- 一个关于二叉树的创建、先序遍历、中序遍历、后序遍历、求叶子节点的完整函数的c语言完整程序。
- c语言链表 关于指针参数调用问题
- 关于C语言变量生存周期、作用域、内存分布、默认值的基本总结
- C语言中关于pow()函数的问题