C++学习路线其一:入门篇:2.了解C++入门代码和注释
本文详细解析了C++入门程序"Hello World"的代码结构,包含三部分:1) #include<iostream>引入输入输出流头文件;2) using namespace std声明使用标准命名空间;3) main()主函数实现输出功能。文章还介绍了C++注释的两种形式://单行注释和/* */多行注释,强调注释对代码可读性的重要性。最后分享了C++学习路线
目录
同志们,我又来辣!上一篇介绍了如何安装VS2026,并且成功运行输出了“hello world”,下面我们就要了解一下那段代码是何意味,并且学习一下什么是注释。
#include<iostream>
using namespace std;
int main(){
cout<<"hello world"<<endl;
return 0;
}
一、了解入门程序
代码功能解析
这段代码是一个经典的入门程序,功能是在屏幕上输出"hello world"字符串并换行。整个代码程序结构可以简单分为三部分:包含头文件、使用命名空间和主函数。
包含头文件
#include<iostream>
这就是第一部分:包含头文件。
首先解释一下头文件是干啥的,哪怕现在不理解,之后用着用着也会明白。
头文件就像是程序的“说明书”,可以告诉在代码运行之前就告诉电脑(其实是编译器)我这里面有那些东西,之后用的时候直接用就行,就不需要我自己重新写了。
#include 相当于告诉编译器:我要用某个工具箱里的工具。
这个工具箱可以是系统给你的,用法:#include + 尖括号包裹文件名,例: #include<文件名>;
这个工具箱也可以是自己写的,用法:#include + 双引号包裹文件名,例: #include"文件名";
所以,#include<iostream> 在这里表示我要使用 iostream 文件里面的东西。
iostream 标准输入输出流库文件,听名字就知道里面的东西是关于输入和输出的,代码运行之后能在控制台打印显示 “hello world” ,就是用的这个文件里面提供的 cout 对象实现屏幕输出功能。同时像让程序能够获取键盘输入的数据,需要使用 iostream 里面提供的 cin 对象实现获取输入 。
使用命名空间
using namespace std;
这是第二部分:使用命名空间。
首先解释一下命名空间是干啥的,它主要是用来解决命名冲突的。
说直白点就是避免重名问题,咱们现在使用的都是别人写好的函数和类,包括上面提到的 cout 和 cin ,都是别人写好的,你直接拿来用,但万一他们在写不同函数和类的时候,使用了一样的名字,那我们不炸了吗,使用就有了命名空间来解决重名问题。
像文件夹管理文件一样,将相关代码归类到特定命名空间,例如:std 是标准库的命名空间。
于是我们写代码时,对于任何不是自己写的东西都要在前面加上对应的命名空间。
格式: 命名空间 双冒号 函数/类 例如:std :: cout 和 std :: endl
但这样实在是太麻烦了,于是有了这样偷懒的语句,using 使用 ,namespace 命名空间,std 标准库的命名空间,所以 using namespace std; 我们也知道了它是啥意思了,声明使用标准命名空间,避免每次调用库函数时重复写 std :: 前缀。例如可直接使用 cout 而非 std :: cout 。
主函数
int main(){
cout<<"hello world"<<endl;
return 0;
}
函数的知识以后会同一讲,这里大家就记住 main() 函数是主函数,int 是它的返回类型。花括号{}里面包裹的内容是函数体,就是要执行的具体代码, 我们目前写的所有代码都是放在函数体里面。
主函数很特别,它是整个项目的入口,程序执行的入口点,所以一个项目里面只能有一个main函数。如果整个项目里面有两个main,那电脑(其实是编译器)这个傻蛋就不知道改往哪儿走了。
接下来就是 整个代码具体执行的内容 cout << "hello world" << endl; 和 return 0;
刚才在包含头文件里面说了,cout 是实现屏幕输出的功能,而 endl 是换行并刷新缓冲区,如果你写很多条 cout << "hello world" << endl; 会发现它每行输出完 hello world 之后就会从下一行开始输出,而不是堆在一行,这就是 endl 的功能。
同时,使用命名空间里面也说了,通过使用 std 标准库的命名空间,避免每次调用库函数时重复写 std :: 前缀,可直接使用 cout、endl 而非 std :: cout 、std :: endl。
"hello world" 就是我们要输出的具体内容,因为 hello world 是一个很长字符串,所以要使用引号括起来,告诉电脑(其实是编译器),这是一个字符串,也可以把引号里面的 hello world 替换成任意的字符串,你换成啥,程序运行之后输出啥。
现在我们就明白了 cout、"hello world"、endl 的含义,现在就差 << 和 return 0; 需要学习了。
<< 是流插入运算符,通过 << 就可以将后面的东西拼给前面,所以 cout 里面就存了这些内容:hello world 外加一个换行,然后通过流对象 cout 将字符串输出到控制台。
return 0; return啥意思,不就是英语“返回”吗,所以这句话的意思就是返回 0。很懵逼是不是,为啥要写这句话呀? 这个时候就要看我在这一部分开头提到的 “大家就记住 main() 函数是主函数,int 是它的返回类型” 它既然有返回的类型,那是不是我就得给他返回一个东西呀,而且还得是跟他类型一致的才行,int 相当于 integer 的缩写,所以要给它返回一个整数。函数返回值为0,表示程序正常结束。非零值通常表示错误代码,这就是 return 0;的含义。当然,如果以后自己写函数,那返回类型和具体 return 啥东西就是自己说了算的。
整段代码读下来,就只有花括号{}里面的内容是我们自己可以改变的,其他的都是固定的格式,所以每次写C++代码时,起手就是
#include<iostream>
using namespace std;
int main(){
return 0;
}
注意:C++的语句后面都要加分号表示这条语句的结束,分号不能缺少 例:return 0;
扩展:
输出机制:可以通过<<运算符链式调用实现多内容输出
cout << "Score: " << 100 << endl;
endl 的特殊性在于它不仅是换行符,还会立即刷新输出缓冲区。等价于:
cout << '\n' << flush;
二、注释
注释,简单来说就是给你写的代码进行解释,让你自己和别人都能明白你写的是啥。所以,注释是给人看的,不是给电脑看的,电脑是不识别注释的。
注释分为:单行注释 和 多行注释。
单行注释
以双斜杠 // 开头,从 // 到行尾的内容会被编译器忽略。
#include<iostream>
using namespace std;
int main(){
//这是单行注释
//下面这句代码的意思是 输出hello world
cout << "hello world" << endl; //我要学习C++
//cout << "你好,世界" << endl;
return 0;
}
对于每一行注释,前面都要加上 // ,这样电脑就会跳过这句话。
那有人就想到,这样一行一行加 // 太麻烦了,能不能一下注释好多行。
有的兄弟,有的!下面就介绍一下多行注释。
多行注释
以 /* 开头,以 */ 结尾,之间的所有内容均为注释。可以跨行进行说明或屏蔽代码。
/* 这是一个多行注释,
可以跨越多行,
常用于函数或复杂逻辑的说明 */
#include<iostream>
using namespace std;
int main(){
/*
cout << "hello world" << endl;
cout << "你好,世界" << endl;
*/
return 0;
}
这就是注释的用法,这玩意儿十分常用,毕竟当你写项目时,可能过个两三天就忘了自己当时咋写的,写的啥,所以及时写注释是个很好的习惯。
OK,这就是C++学习路线其一:入门篇的第二篇文章,让大家了解入门程序,在控制台上显示 hello world 的全部细节,并学习了一下注释。
对于我的每篇文章,我都会将我的学习路线放在结尾,目前进度为:第一阶段 C++基本语法入门篇的第二篇。
同志们,下一篇文章再见,我尽量会保持一周写三篇文章,记录我的学习路线,对于C++的学习我打算按照下面的路线去学,大家有比我学的快的也可以按照我的路线去看看自己接下来学什么。
网课推荐:黑马程序员,同时给大家推荐一位大佬,b站搜索“恋恋风辰zack”,这个大佬的视频也是我一直在跟着学习的,讲的很好。
学习路线:主攻高性能开发,如果大家像学习游戏引擎或嵌入式,可以自己设计一下学习路线
第一阶段: C++基本语法,Git入门
第二阶段:熟练STL,类,智能指针,模板,函数绑定等等
第三阶段:Linux基础,多线程, 网络编程,设计模式
第四阶段:gRPC,MySQL,Redis,JS,QT,消息队列,手写各种池子(线程池、内存池)
第五阶段:进军高性能方向,开始学习 一致性哈希,分布式锁,Raft算法,网络优化、内存优化、并发优化
第六阶段:真正实现工业级项目,在每一阶段的学习过程中都要写一些练手的小项目,可以在GitHub上找一下,积少成多,最终可以实现工业级项目
更多推荐


所有评论(0)