C语言编程基本规范

http://blog.csdn.net/pipisorry/article/details/25404807

不要使用void main和system("pause")

1 : "void main"不是C++的標準進入點
标准只支援两种宣告
第一种"int main"
第二种"int main(int argc, char *argv[])"
宣告"void main"可能会有非预期的结果
这点不只适用于C++,C也一样管用
这是教科书的错?或者是教授们的错?

2 :不要用system("pause")来暂停,可以改用std::cin.get或getchar()
为何不要用system("pause")?
有两个理由
一 : 不具可移植性
二 : 这东西很贵

贵在那里?让我们来看看system("pause")的流程
1 : 暂停你的程式
2 : 在sub-process中启动OS
3 : 寻找要执行的命令并为之分配记忆体
4 : 等待输入
5 : 回收记忆体
6 : 结束OS
7 : 继续你的程式

[不要再用system("pause")和void main了]

系统让C++控制台程序停下来,实现暂停功能

一、针对Microsoft

#include   <stdlib.h>
system( "PAUSE ");
--------------------
getchar();
---------------------
Sleep();

二、针对Linux
getchar();
皮皮blog


exit参数代表的意思

他就是一个给外部程序一个值,外部程序利用这个值可以相应的捉某些动作,至于这个值代表的是什么,由你自己决定,不管是1代表正常还是0代表正常,都一样,但是在Windows平台一般是0代表正常,这只是个习惯问题.假如是你开发外部程序调用你自己的Java程序,那么使用10000代表正常退出也是无所谓的,只要你理解就可以了,但是还是按照习惯来的比较好

C 语言的设计之初就是为 Unix 系统设计的,而这个系统是『很多程序互相配合』搭配成一个系统。

每个运行着的程序都是进程,而进程就会有父进程,父进程通常是直接启动你的进程,父进程死亡的进程会被 init 收养,其父进程变为 init,而 init 的父进程是进程 0,进程 0 则是系统启动时启动的第一个进程。
exit() 里面的参数,是传递给其父进程的。对父进程来说,你的进程仿佛是一个函数,而函数可以有返回值。


所以回答第一个问题:exit() 的参数,是给自己的父进程使用的。通常一个程序的父进程可能是任何进程,因此我们无法预期我们的父进程是否规定必须要有这个返回值,那么我们应当提供这个返回值,以保证不同的父进程的需求得到满足。


一个典型的例子是 make,Makefile 对于一个 target 下面有多条顺序执行的语句,而 make 作为父进程,会检查每个语句的返回值是否为 0 ,遇到任何一个非 0 值,都会停止当前 rule 的执行。而我们知道,make 实际上可以执行任何命令任何程序,因而任何被 make 调用的程序必须有正确的返回值。

另外一个问题,为什么要使用 exit() 函数?

答:是历史原因,虽然现在大多数平台下,直接在 main() 函数里面 return 可以退出程序。但是在某些平台下,在 main() 函数里面 return 会导致程序永远不退出(因为代码已经执行完毕,程序却还没有收到要退出的指令)。换句话说,为了兼容性考虑,在特定的平台下,程序最后一行必须使用 exit() 才能正常退出,这是 exit() 存在的重要价值。

from: http://blog.csdn.net/pipisorry/article/details/25404807

ref: 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值