臭名昭著的“Hello,World!”

发布时间 2023-05-23 14:07:54作者: 念经似的zzz
Windows平台下的c++集成开发环境(Integrated Development Environment,IDE)有很多种,例如微软的Visual studio 2022、Visual Studio Code两款IDE,前者偏向企业级的重量级代码开发,后者偏向数据科学界的轻量级高度可配置性开发。还有CLion,其是JetBrains开发的现代IDE,旨在Windows,Linux和MacOS等各种平台上运行C和C ++。这些开发套件包含有最基本的文本编辑、代码编译、Debug功能(仿真调试,追踪代码运行过程)、图形用户界面等功能,对用户来说十分友好。具体选择哪款IDE是仁者见仁智者见智的问题,但普遍选择标准是界面美观性、编码编写的便捷性、代码跨平台性等。我这里为了方便选择酷炫的Visual Studio Code。假设你已经安装了VS code并配置好了c++运行环境(如何下载和配置网上教程多如牛毛,据说环境配置是程序员的一大拦路虎,不知道真假!还没入门就死在环境配置上了)。
 
据说深度学习各种包配置劝退了一波程序员
IDE配置好后,我们就开始进入正题:程序员的骨灰级示例代码,Hello World!
#include <iostream> using namespace std; int main(int argc, char** argv) { int input = 10; cout << "Hello, world!\n" << endl; cin >> input; return 0; }
短短的8行代码包含的信息量不少
  • 标准库 其使用到了c++标准库iostream。c++属于高级语言,其包含有很多封装好的库,所以学习库如何使用及其原理也是至关重要的。iostream是c++的常用标准库之一内部包含了很多我们常用的流文件的处理,如输入和输出。为了防止库与我们自定义的变量名称冲突,所以它使用了命名空间,封装的命名空间名称为std。
 
当我们使用标准库里的变量或者对象时,有两种方式,其一是在文件开头使用using namespace xxx;其二是直接使用xxx:yyy(xxx是命名空间,如std,yyy是命名空间里声明的对象,如cin)。前者属于全局性的,把所有命名空间里声明的对象都包含进来了,后者将灵活性交给程序员,使用到什么对象时,再包含进来。为了编写代码方便,推荐使用第一种。
//其一: using namespace std; cout << "Hello, world!\n" << endl; //其二 std::cout << "Hello, world!\n" << std::endl;
下图是std命名空间声明的部分对象截图
 
  • int main(int argc, char** argv) 系统运行的初始函数就是main函数,其第一个参数是argc(argument count)表示需要传入的参数个数,第二个参数是argv(argument value)表示需要传入的参数值。默认argc值为1,argv里保存的是程序的名称。至于为什么argv第一个保存的是程序的名称,可能是因为程序员会用到?不是我们需要关心的问题。
#include <iostream> using namespace std; int main(int argc, char** argv) { cout << "argc = " << argc << endl; cout << "argv[0] = " << argv[0] << endl; return 0; }
main函数传入三个参数案例
#include <iostream> using namespace std; int main(int argc, char** argv) { cout << "argc = " << argc << endl; cout << "argv[0] = " << argv[0] << endl; if(argc == 3) { int a = stoi(argv[1]); int b = stoi(argv[2]); cout << "a+b = " << a+b << endl; } else { cout << "传入的参数个数不对"<<endl; } return 0; }
当项目有需求,如让你写个小工具自动化批处理文件时,使用命令行给main函数传参就会显得很实用。
  • main函数返回值
  • 编写main函数梭哈return 0可不是个好习惯,应该根据不同情况返回不同值,方便程序执行过程中就可以得知程序是那个环节出现问题。
  • main函数中的return 0是返回给操作系统的,如不需要返回给操作系统可定义void main(),常见于单片机程序。
  • return 0 exit(0) _exit(0)区别,
  1. return是关键字,exit(0)和_exit(0)是函数
  2. return是返回给上一级,exit(0)和_exit(0)是退出进程,在main函数里,return 0 和 exit(0) 效果一样
  3. exit(0)退出进程前刷新IO缓冲区,_exit(0)属于内核中的系统调用,不会刷新IO缓冲区