【C++】简单理解头文件、命名空间、操作符、函数返回值

server/2024/11/26 11:28:31/

前言

这是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 用于返回函数的计算结果,或者用于提前终止函数的执行。

http://www.ppmy.cn/server/145039.html

相关文章

STM32 外设简介

STM32 外设简介 STM32 是由意法半导体 (STMicroelectronics) 开发的一系列基于 ARM Cortex 内核的微控制器&#xff0c;广泛应用于嵌入式系统中。STM32 系列的一个重要特点是其丰富而强大的外设模块&#xff0c;支持多种接口和功能&#xff0c;能满足工业控制、物联网、消费电…

SD NAND 的 SDIO在STM32上的应用详解

四.SDIO功能框图(重点) SDIO包含2个部分&#xff1a; ● SDIO适配器模块&#xff1a;实现所有MMC/SD/SD I/O卡的相关功能&#xff0c;如时钟的产生、命令和数据的传送。 ● AHB总线接口&#xff1a;操作SDIO适配器模块中的寄存器(由STM32控制SDIO外设)&#xff0c;并产生中断和…

Unity图形学之CubeMap立方体贴图

1.CubeMap&#xff1a;有六个面的贴图组成 2. 假反射&#xff1a;反射天空盒子 &#xff08;1&#xff09;正常UV采样&#xff1a; &#xff08;2&#xff09;Cube的采样&#xff1a;利用反射角采样&#xff0c;反射角X和Cube的交点采样 Shader "Custom/TestReflect"…

java Scanner

在 Java 中&#xff0c;Scanner 是一个用于从输入流中读取数据的类&#xff0c;常用于从控制台读取用户输入。它位于 java.util 包中&#xff0c;并提供了多种读取不同类型数据的方法。以下是 Scanner 类中最常用的几个方法以及它们的详细说明。 1. 创建 Scanner 对象 首先&a…

1.5万字长文Java集合与数据结构面试题(注:该篇博客将会持续维护 最新维护时间:2024年11月25日)

&#x1f9f8;本篇博客重在讲解Java集合与数据结构面试题&#xff0c;将会实时更新&#xff0c;欢迎大家添加作者文末联系方式交流 &#x1f4dc;JAVA面试题专栏&#xff1a;JAVA崭新面试题——2024版_dream_ready的博客-CSDN博客 &#x1f4dc;作者首页&#xff1a; dream_rea…

SpringMvc给页面一个默认界面

1、config包 1.1、创建SpringMvcConfig类并实现接口WebMvcConfigurer EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {//视图解析器Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver new InternalResourceView…

极简开源Windows桌面定时提醒休息python程序

当我们长期在电脑面前坐太久后&#xff0c;会产生一系列健康风险&#xff0c;包括干眼症&#xff0c;颈椎&#xff0c;腰椎&#xff0c;肌肉僵硬等等。解决方案是在一定的时间间隔内我们需要have a break, 远眺可以缓解干眼症等眼部症状&#xff0c;站起来走动两步&#xff0c;…

【漏洞复现】代付微信小程序系统 read.php 任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…