前言
这是C++入门学习中的第一段代码。
#include <iostream>
using namespace std;
int main()
{cout << "Hello world!" << endl;return 0;
}
这段代码的作用是在屏幕上输出“Hello world!”,详细点说,这里引用iostream头文件,使用std命名空间,调用其中输出操作符进行输出操作。可能初学者对相关概念还会有疑问:什么是iostream?using namespace是什么意思?std表示什么?cout从何而来?<<符号是做什么用的?endl和return 0又表示什么?(反正我第一次学的时候这些疑问都有QAQ)
为了回到上面的问题,可以将疑问分为:
1. 什么是头文件?
2. 什么是命名空间?
3. 什么是操作符?
4. 函数的返回值?
1、头文件
在C/C++中,头文件是一种特殊的文件,是包含函数声明、类定义、模板定义以及全局变量定义的文件。头文件的存在使得代码可以被模块化管理,方便代码的管理和复用,可以在多个源文件之间共享。
<iostream>库是C++标准库中用于输入输出操作的头文件。下面介绍<iostream>库内定义的常用类和操作符。
常用类:
std::istream:用于输入操作的抽象基类。
std::ostream:用于输出操作的抽象基类。
std::iostream:继承自std::istream和std::ostream,用于同时进行输入和输出操作。
std::cin:标准输入流对象,通常与键盘关联。
std::cout:标准输出流对象,通常与屏幕关联。
常用操作符:
>>:输入操作符,从输入流读取数据。
<<:输出操作符,将数据写入输出流。
2、命名空间
命名空间(namespace)是为了在程序中有效地组织代码并避免命名冲突。
如不同程序员编写不同库时,难免会出现相同的变量名,不同命名空间的出现防止因为变量名重复而出现问题。
// 没有命名空间时,两个库中函数冲突
int print(){return 1;
}
int print(){return 2; // 错误:这里的print和上面重复定义
}
而在使用命名空间后:
namespace libraryA{int print(){return 1;}
}namespace libraryB{int print(){return 2;}
}int main(){libraryA::print(); // 使用libraryA的printlibraryB::print(); // 使用libraryB的printreturn 0;
}
using namespace是C++编程语言中的一个名称空间(namespace)声明,它允许程序员省略前缀,直接使用所在命名空间中的标识符。
而using namespace std表示允许程序员直接使用标准库std中的所有标识符。std是C++标准库的命名空间。
cout就是在标准库命名空间std中,表示标准输出流。
3、操作符
操作符(operator) 是一种用于执行特定操作的符号或关键词,比如算术操作、比较、逻辑操作等。操作符是语言的基础组成部分,用于处理数据和对象。
常见操作符如:
- 算术操作符:+, -, *, /
- 逻辑操作符:&&, ||, !
- 比较操作符:<, <=, >, >=, ==, !=
- 赋值操作符:=, +=, -=, *=, /=
- 位操作符:&, |, ^, <<, >>
- 其他操作符:[], ->, .*, new, delete 等
<<是一个左移操作符,但是在iostream中<<被重载为流插入操作符,用于将数据插入到输出流中(例如cout),即将右侧的值输入到左侧的流中
(重载的意思可以理解为在iostream中对<<的功能重新定义,<< 原本是左移操作符,但通过重载,在 iostream 中它被赋予了新的含义,成为流插入操作符,用于输出数据到流)
#include <iostream>
using namespace std;int main() {cout << "Hello World!" << endl;return 0;
}
上面代码解释为:将"Hello World!"插入到左侧的cout(输出流对象)中。endl用于向控制台或其他输出流写入一个换行符(等价于\n),并刷新输出缓存区。
4、返回值
return语句用于从函数中返回值,return后面的值就是函数的返回值。
- 在 main() 中,return 0; 表示程序正常结束,并向操作系统返回状态码 0。
- 如果不写 return,C++11 及之后的标准会自动插入 return 0;。
- 对于非 main() 函数,return 用于返回函数的计算结果,或者用于提前终止函数的执行。