主函数(main函数)的参数:
int main(int argc,char *argv[],char *envp[]);
- argv: (char*)[ ]指针数据类型,传递给main方法的参数列表
- argc: int类型,传递给main方法的参数列表中的参数个数;相当于argv是一个数组,argc把数组的长度传进去
- envp:(char*)[ ]指针数组类型,传递的环境变量列表
打印主函数的参数:
打印的结果:
注意:只要用户执行程序,main方法默认至少接受一个参数,此参数就是执行程序的命令
main方法传参示例:
“hello world ”是一个字符串,所以算是一个参数
打印环境变量:环境变量一般不用传递,是继承和父进程来的
输出缓冲区:
这个程序输出的结果是:先睡眠了五秒,再输出helloworld。而不是先输出hello,再睡眠五秒,再输出world。
当我们执行这个代码时,它是按照顺序执行,先执行第一句再执行第二句然后执行第三句;但它执行第一句的printf的时候并不是很快将它打印出来,而是将hello写入输出缓冲区(内存上的一块空间);再去执行sleep睡眠5秒钟;然后执行第三句的printf。和第一句一样,将world和\n写入到输出缓冲区;最后打印出helloworld到界面上。
这个程序的输出结果:先睡眠了五秒,再输出helloworld,再睡眠两秒
第二次为什么为在输出helloworld后会再睡眠两秒呢?因为world后面还有一个\n,这也是我们输出缓冲区的条件之一。
将输出缓冲区中的内容刷新到界面是需要一定的条件:
- 当输出缓冲区存在“\n”;
- 手动刷新 调用fflush(stdout)方法;
- 缓冲区满
- 进程结束 -exit不管当前缓冲区的状态,有没有数据,会直接结束进程,不会去刷新缓冲区 exit缓冲区有数据会先刷新数据,再结束进程