C++简明教程(4)(Hello World)

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    return 0;
}

一、#include <iostream>

在 C++ 编程中,当我们想要使用在当前文件之外定义的函数、变量或者对象时,就需要使用 #include 指令来导入包含其声明的头文件。就好像你在写一篇故事,故事里的角色要使用某个特定的工具,但这个工具不是这个角色自己拥有的,而是在一个专门存放工具的仓库(头文件)里被定义和描述的,所以我们需要先把这个“仓库”引入到故事中来(通过 #include 指令将头文件包含进来),这样角色才能使用那个工具。

在这段代码中,我们使用的 cout 函数实际上是在 iostream 头文件中定义的。iostream 是 C++ 标准库中用于处理输入输出操作的头文件,它包含了一系列与控制台(也就是我们运行程序后看到的那个黑色窗口)进行交互的工具和对象的定义。比如,通过 iostream 中定义的功能,我们既可以向控制台输出信息(像这里使用 cout 输出 “Hello World!”),也可以从控制台接收用户输入的数据(虽然这段代码没有展示输入的操作,但 iostream 也为其提供了相应的功能,比如使用 cin 对象来接收用户从键盘输入的数据)。所以,如果我们想要在程序中使用 cout 进行输出操作,就必须先把 iostream 头文件包含进来,否则编译器在编译代码时就会找不到 cout 的定义,从而报错,就像你在故事里提到一个不存在的工具一样,读者(编译器)会感到困惑并指出问题。

二、main 函数

main 函数在 C++ 程序中扮演着极其关键的角色,它是整个程序的入口点,就好比一场戏剧的开场幕布拉开的那一刻。当我们运行一个 C++ 程序时,操作系统首先会找到并从 main 函数的第一行代码开始执行,然后按照代码的逻辑顺序依次向下执行每一行语句,直到 main 函数结束。这意味着程序的整个生命周期是从 main 函数的启动开始的,它决定了程序最初的行为和操作顺序。

需要特别注意的是,在一个完整的 C++ 项目中,只能有一个 main 函数。这是因为操作系统需要一个明确的起点来启动程序,如果存在多个 main 函数,操作系统就会不知道该从哪里开始执行,就像一场比赛有多个起点一样,会导致混乱。所以,我们在编写 C++ 项目时,要确保只有一个 main 函数作为程序的入口,这样程序才能顺利地运行起来。

三、命名空间

命名空间是 C++ 中一个非常重要的概念,它的主要目的是为了解决命名冲突的问题。想象一下,在现实世界中,可能有两个不同的城市都有一个叫做“张庄”的地方,如果我们在地图上只写“张庄”,就很难区分到底是指哪个城市的“张庄”。同样的道理,在 C++ 编程中,当不同的代码模块或者库都使用了相同的名字来定义函数、变量或者类时,就会产生命名冲突。例如,你可能在自己编写的代码中定义了一个名为 max 的函数,用来求两个数中的最大值,而同时 C++ 标准库中也可能有一个 max 函数(用于其他目的),这时候编译器就会不知道你到底是想用自己的 max 函数还是标准库中的 max 函数,从而导致错误。

为了避免这种情况,C++ 引入了命名空间的概念。命名空间就像是给不同的代码区域贴上了不同的标签,通过这些标签(命名空间的名称)来区分相同名字的元素。在使用命名空间中的元素时,我们通过 :: 运算符来指定具体是哪个命名空间中的元素。例如,在这段代码中,std 就是一个命名空间,coutstd 命名空间中的对象,所以我们使用 std::cout 来明确表示我们使用的是 std 命名空间中的 cout 对象,而不是其他可能存在的同名对象。

下面我们通过一个简单的例子来进一步说明命名空间的用法:

// 定义一个自己的命名空间
namespace MyNamespace {
    int myFunction(int num) {
        return num * 2;
    }
}

#include <iostream>

int main() {
    // 调用自己命名空间中的函数
    int result = MyNamespace::myFunction(5);
    std::cout << "The result of myFunction is: " << result << std::endl;
    return 0;
}

在这个例子中,我们首先定义了一个名为 MyNamespace 的命名空间,并在其中定义了一个函数 myFunction,它接受一个整数参数并返回该参数的两倍。然后在 main 函数中,我们通过 MyNamespace::myFunction 的方式调用了这个函数,并将结果输出到控制台。通过这种方式,我们将自己定义的函数放在一个独立的命名空间中,避免了与其他可能存在的同名函数发生冲突,同时也展示了如何在代码中使用命名空间来组织和访问不同区域的代码元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能网关在电力物联网中的应用

摘要 随着电力技术的快速发展&#xff0c;断路器从传统的单一保护功能演变为具备智能监控和远程管理能力的多功能设备。智能断路器作为配电系统的重要组成部分&#xff0c;集成了实时监测、远程控制和多层保护功能&#xff0c;显著提升了配电系统的安全性、稳定性和管理效率…

【论文阅读】Comprehensive Review of End-to-End Video Compression

摘要&#xff1a; 近年来&#xff0c;端到端视频压缩作为一种新兴且有前景的解决方案开始在视频压缩领域受到关注。本文对端到端视频编码和解码技术的发展与现状进行了全面的综述&#xff0c;详细介绍了传统混合编码器和端到端编码器的基本原理。本研究深入探讨了从传统视频压…

系统架构师考试 常错题记录 01

1.按照《中华人民共和国著作权法》的权利保护期&#xff08; &#xff09;受到永久保护。 A.发表权 B.修改权 C.复制权 D.发行权 正确答案&#xff1a;B 解析&#xff1a;本题考查知识产权法中的《中华人民共和著作权法》保护期限知识点。 《中华人民共和著作权法》中约定署名权…

Redis-十大数据类型

Reids数据类型指的是value的类型&#xff0c;key都是字符串 redis-server:启动redis服务 redis-cli:进入redis交互式终端 常用的key的操作 redis的命令和参数不区分大小写 &#xff0c;key和value区分 1、查看当前库所有的key keys * 2、判断某个key是否存在 exists key 3、查…

IIC驱动EEPROM

代码参考正点原子 i2c_dri:主要是三段式状态机的编写 module iic_dri#(parameter SLAVE_ADDR 7b1010000 , //EEPROM从机地址parameter CLK_FREQ 26d50_000_000, //模块输入的时钟频率parameter I2C_FREQ 18d250_000 //IIC_SCL的时钟频率)( …

webrtc获取IceCandidate流程

在WebRTC(Web Real-Time Communication)中,ICECandidate是一个关键概念,它用于描述在建立点对点(P2P)连接时可以考虑的潜在通信端点。以下是关于WebRTC中ICECandidate的详细解释: 一、ICECandidate的定义 ICECandidate对象通常包含以下关键属性: foundation:用于唯一…

一文彻底拿捏DevEco Studio的使用小技巧

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴&#xff01;君志所向,一往无前&#xff01; 0.安装DevEco Studio DevEco Studio面向HarmonyOS应用及元服务开发者提供的集成开…

基于openEuler22.09部署OpenStack Yoga云平台(一)

OpenStack Yoga部署 安装OpenStack 一、基础准备 基于OpenStack经典的三节点环境进行部署&#xff0c;三个节点分别是控制节点&#xff08;controller&#xff09;、计算节点&#xff08;compute&#xff09;、存储节点&#xff08;storage&#xff09;&#xff0c;其中存储…

新服务器ubuntu系统相关操作

1、查看驱动:驱动版本535.216.01能够支持cuda12.2,下面直接使用默认安装的cuda。 2、赋予用户管理员权限。 首先有超级用户(root)权限来编辑 /etc/sudoers 文件,visudo 是一个命令,用于安全地编辑 /etc/sudoers 文件。运行: sudo visudo 在 visudo 编辑器中,找到类似…

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …

【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】

目录&#x1f60b; 任务描述 相关知识 1. 二叉树的基本概念与结构定义 2. 建立二叉树 3. 先序遍历 4. 中序遍历 5. 后序遍历 6. 层次遍历 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;实现二叉树的遍历 相关知识 为了完成本关任务&#xff0c;你需要掌…

简单园区网拓扑实验

1.实验拓扑 2.实验要求 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、AR1为企业出口路由器 6、要求全网可…

USB接口实现CDC(usb转串口功能)

主控&#xff1a;stm32f429 PHY芯片&#xff1a;usb3320 Cubemx System Core-RCC connectivity-USB_OTG_HS Middleware and Software Packs-USB_DEVICE 时钟配置&#xff1a;根据自己使用的MCU工作频率设置 Generate Code Keil5 打开工程 usbd_cdc_if.c这个文件&…

C++---------动态内存管理

以下是对 C 中相关概念的详细说明及代码示例&#xff1a; 一、动态分配和堆 new 操作符&#xff1a; new 操作符用于在堆上动态分配内存。它会调用对象的构造函数&#xff08;如果是类对象&#xff09;并返回指向分配内存的指针。示例&#xff1a; #include <iostream&g…

企业该如何进行合格文件外发管理

随着信息技术的迅猛发展&#xff0c;企业间的文件交换变得越来越频繁。但是&#xff0c;如何确保文件传输的安全性与效率&#xff0c;成为企业管理者面临的一个重大挑战。镭速&#xff08;Raysync&#xff09;文件外发管理方案以其独特的优势&#xff0c;成为众多企业的首选。本…

Modbus数据网关在制造企业的应用与效果

Modbus是一种广泛应用于工业通信的协议&#xff0c;支持多种设备间的数据交换&#xff0c;如传感器、仪器仪表、PLC、工业机器人、数控机床等。Modbus数据网关则是一种网络通信转换设备&#xff0c;它能够将Modbus协议的数据转换为其他主流协议&#xff08;如MQTT、OPC UA、HTT…

解决集群Elasticsearch 未授权访问漏洞

1、ES集群配置 首先至少是三个节点 2、生成证书&#xff08;后面要用&#xff09; cd /home/elasticsearch-7.4.2/bin ./elasticsearch-certutil cert 回车&#xff0c;空密码&#xff08;可以输入密码&#xff09;&#xff0c;回车 3、将elastic-certificates.p12 复制到三…

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…

Jenkins 任意文件读取(CVE-2024-23897)修复及复现

Jenkins任意文件读取漏洞CVE-2024-23897修复及复现 漏洞详情影响范围漏洞复现修复建议 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行…

C语言数组查找

数组概念 就是一堆数的一个集合&#xff0c;包含于指针&#xff0c;但是与指针不同的是数组是开辟了空间的 char a[20] //开辟了20个空间 char *p //一个指针&#xff0c;并没有开辟空间 数组名作为指针&#xff1a; 在C语言中&#xff0c;数组名通常可以被看作是一…