【C++复习1】程序结构和C++的工作原理

news2024/10/5 6:51:57

如果你是一名newbird的话,建议先看如下的视频加深理解后,再看下面的内容:
https://www.bilibili.com/video/BV1N24y1B7nQ?p=6
在这里插入图片描述

声明

以下的内容均由chatGpt编写与对上面这个视频进行总结生成,我就只负责改改格式。

C++的工作原理

1. 什么是C++

C++是一种高级编程语言,旨在提供一种面向对象的编程模型,同时还支持低级别的系统编程。

2. 下面是C++的一般工作原理(其内容与C++编译器的工作原理差不多):

  1. 编写C++代码:开发人员使用C++编写源代码。源代码包含C++语言的语句和算法,这些语句和算法描述了程序应该执行的操作。

  2. 编译代码:源代码需要经过编译器的处理,以将其转换为可执行文件。编译器将源代码转换为机器代码,这是计算机硬件能够理解和执行的指令。

  3. 连接程序:编译器生成对象文件,这些对象文件需要链接器将它们组合成可执行文件。链接器将各个对象文件的函数和变量组合起来,创建一个可执行的二进制文件。

  4. 运行程序:一旦可执行文件生成,用户可以运行程序。程序被加载到内存中,并开始执行其中的代码。

  5. 执行代码:一旦程序开始运行,它将执行C++代码中定义的指令和算法。程序可以使用变量、控制结构、函数和其他C++语言元素,以完成其任务。

在程序执行期间,它可以与操作系统和计算机硬件交互。程序可以使用操作系统API调用来执行I/O操作、内存管理和其他操作。程序还可以与硬件设备进行通信,如打印机、网络适配器和输入设备等。

总之,C++程序的工作原理包括编写源代码、编译源代码、链接生成的对象文件、加载可执行文件并执行其中的代码。

2. 程序结构

2.1 main()函数

概念

在C++中,main函数是程序的入口点,也是程序执行的起点。程序在启动时会首先执行main函数,然后按照顺序执行main函数中的语句,直到程序结束或遇到return语句为止。

main函数的语法如下:

int main() {
  // 程序语句
  return 0;
}

在上面的示例代码中,main函数的返回值类型为int,表示程序正常结束时返回的整数值。可以使用return语句在程序执行结束时返回一个整数值,这个值会被传递给操作系统,用于表示程序的执行状态。通常情况下,返回值为0表示程序正常结束,非0值表示程序出现错误或异常情况。

除了int类型之外,main函数还可以返回void类型。在这种情况下,程序的执行状态默认为0,因为没有返回值传递给操作系统。

main函数可以带有参数,其中argc参数表示命令行参数的数量,argv参数是一个指向指针的指针,它指向每个命令行参数的字符串。以下是一个带有命令行参数的示例:

int main(int argc, char* argv[]) {
  // 处理命令行参数
  return 0;
}

2.2 #include

概念

在C++中,#include指令用于包含头文件,即将其他源代码文件中定义的函数和变量导入到当前源代码文件中使用。

#include指令的语法如下:

#include <header_file>

其中,header_file是要包含的头文件的名称。头文件名称通常使用扩展名.h(例如,iostream.h)或没有扩展名(例如,cstdlib)

两种不同#include指令形式,分别是角括号形式和引号形式。使用角括号的形式将告诉编译器在系统目录中查找头文件,而使用引号的形式则告诉编译器在当前目录中查找头文件。

以下是两种#include指令的示例:

#include <iostream> // 使用角括号形式,编译器将在系统目录中查找头文件
#include "my_header.h" // 使用引号形式,编译器将在当前目录中查找头文件

在C++程序中,头文件包含通常位于源代码文件的开头。这样,当编译器扫描源代码文件时,它可以读取和处理所有需要包含的头文件。通过包含正确的头文件,程序可以使用其他源代码文件中定义的函数和变量。

2.3 cout

概念

在C++中,cout是一个标准输出流对象,用于将文本输出到控制台或其他标准输出设备。cout是iostream标准库中的一个对象,用于向控制台输出信息。

cout的语法如下:

#include <iostream> // 头文件声明
using namespace std; // 命名空间

int main() {
  cout << "Hello, world!"; // 输出文本
  return 0;
}

在上面的示例代码中,cout被用于输出文本到控制台。<<运算符用于将文本流插入到cout对象中。可以使用多个<<运算符将多个文本流连续插入到cout中,这样它们就会在同一行上输出。

cout还可以用于输出变量的值。可以使用<<运算符将变量值插入到文本流中,然后将文本流输出到控制台。

以下是一个输出变量值的示例:

#include <iostream> // 头文件声明
using namespace std; // 命名空间

int main() {
  int x = 42;
  cout << "The value of x is " << x << endl; // 输出变量值
  return 0;
}

在上面的示例代码中,cout被用于输出变量x的值。注意,在文本流中插入变量值时,需要将变量名称放在双引号" "之外。另外,endl操作符用于在输出之后在控制台上插入一个换行符。

总而言之,上面是输出变量和字符串的两个不同例子。

2.4 cin

概念

在C++中,cin是一个标准输入流对象,用于从控制台或其他标准输入设备读取用户输入的数据。ciniostream标准库中的一个对象,用于从标准输入设备读取信息。

cin的语法如下:

#include <iostream> // 头文件声明
using namespace std; // 命名空间

int main() {
  int x;
  cout << "Enter a number: ";
  cin >> x; // 读取用户输入
  cout << "You entered " << x << endl; // 输出用户输入
  return 0;
}

在上面的示例代码中,cin被用于从控制台读取用户输入的整数值。>>运算符用于从cin对象中提取数据,并将其存储在变量x中。注意,读取数据的类型必须与变量的类型相匹配,否则会导致错误。

cin还可以用于从控制台读取其他类型的数据,如浮点数、字符和字符串等。例如,使用>>运算符从cin对象中读取字符串:

#include <iostream> // 头文件声明
using namespace std; // 命名空间

int main() {
  string name;
  cout << "Enter your name: ";
  cin >> name; // 读取用户输入的字符串
  cout << "Hello, " << name << "!" << endl; // 输出问候语
  return 0;
}

在上面的示例代码中,cin被用于从控制台读取用户输入的字符串值。由于输入的字符串可以包含空格,因此cin默认只会读取第一个单词。如果要读取整个字符串,可以使用getline函数。

总而言之,上面分别是输入intstring类型的两个例子

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Live800:在线客服系统对客服管理有哪些好处?

互联网的不断发展&#xff0c;让越来越多的企业开始使用在线客服系统来提高客户服务质量。但是&#xff0c;很多人并不了解在线客服系统对客服管理的好处。本文将介绍在线客服系统的一些能够提高客服管理效率和提升用户满意度的管理功能。 实时客服监控 在线客服系统可以实时监…

MPU6050详解(含源码)

前言&#xff1a;MPU6050是一款强大的六轴传感器&#xff0c;需要理解MPU6050首先得有IIC的基础&#xff0c;MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器&#xff0c;并且含有一个第二 IIC 接口&#xff0c;可用于连接外部磁力传感器&#xff0c;内部有硬件算法支持. 1…

JumpServer Harbor

Jumpserver是一款开源的堡垒机&#xff0c;可使系统的管理员和开发人员安全的连接到企业内部服务器上执行操作&#xff0c;并且支持大部分操作系统&#xff0c;是一款非常安全的远程连接工具 安装JumpServer jumpserver.org官网去下载安装&#xff0c;有一键安装&#xff08;里…

【回溯篇(3)---最少城市数】

1、最少城市数 【题目】 下图表示的是从城市A到城市H的交通图。从图中可以看出&#xff0c;从城市A到城市H要经过若干个城市。现要找出一条经过城市最少的一条路线。 【算法分析】 看到这图很容易想到用邻接距阵来表示&#xff0c;0表示能走&#xff0c;1表示不能走。如图。…

BM14 链表的奇偶重排

链表的奇偶重排_牛客题霸_牛客网 (nowcoder.com) 双指针解决 /*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#x…

Android 9.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析

1.前言 在android9.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需要根据屏幕宽度,来区分x坐标值为多少是左滑出通知栏或者右…

Linux_红帽8学习笔记分享_9(文件系统管理FS Management与swap交换分区管理)

Linux_红帽8学习笔记分享_9(文件系统管理FS Management与swap交换分区管理) 文章目录 Linux_红帽8学习笔记分享_9(**文件系统管理FS Management与swap交换分区管理**)1.fdisk分区命令的使用技巧1.1 创建大小为100M,200M,300M,400M,500M的5个磁盘分区(MBR分区表类型)1.2创建大小…

固态继电器的优点

固态继电器的优点包括紧凑性、抗冲击性和长寿命。以下是这些 SSR 优势中最重要的优势&#xff0c;让您了解为什么这项技术最适合您的应用&#xff1a; 开关速度快 固态继电器器件的主要优点之一是其开关速度。由于无需移动机械部件&#xff0c;SSR 可以在几微秒内切换。这是对…

详解MySQL慢SQL定位、分析

目录 1.概述 2.慢SQL定位 3.SQL性能分析 3.1.例子 3.2.SQL性能分析 3.3.参数说明 3.3.1.id 3.3.2.select_type 3.3.3.key_len 3.3.4.rows 3.3.5.type 3.3.6.extra 1.概述 解决慢SQL的问题无非散步&#xff0c;定位慢SQL、分析慢SQL、优化慢SQL&#xff0c;本文将按…

高效提升计算质量!瑞典量子计算机首次应用于化学

​ &#xff08;图片来源&#xff1a;网络&#xff09; 量子计算机可以模拟化学过程&#xff0c;从新药开发到新材料的方方面面&#xff0c;它都能带来重大影响&#xff0c;人们对此寄予厚望。在瑞典&#xff0c;查尔姆斯理工大学的研究人员首次使用量子计算机在实际化学中进行…

PyQt5桌面应用开发(9):经典布局QMainWindow

本文目录 PyQt5桌面应用系列桌面程序基本布局QMainWindow概况与使用主窗体菜单栏工具栏停靠窗状态栏 代码编辑器的例子总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&#xff1a;事件循…

113-Linux_安装c/c++开发库及连接mysql数据库

文章目录 一.安装c/c开发库二.连接mysql数据库三.用户的管理与授权 mysql数据库的安装 一.安装c/c开发库 安装开发c/c的库&#xff0c;命令&#xff1a;apt install libmysqlclient-dev 二.连接mysql数据库 #include<stdio.h> #include<mysql/mysql.h>void fun…

JAVA13新特性

JAVA13新特性 概述 2019年9月17日&#xff0c;国际知名的OpenJDK开源社区发布了Java编程语言环境的最新版本OpenJDK13。 Features&#xff1a;总共有5个新的JEP(JDK Enhancement Proposals): http://openjdk.java.net/projects/jdk/13/Features 350:Dynamic CDS Archives 动…

C++ STL之vector基础

文章目录 前言STL之vector基础1. What&#xff1a;什么是 vector&#xff1f;2. Why&#xff1a;为什么使用 vector&#xff1f;3. How&#xff1a;怎么使用vector?3.1 vector的定义演示&#xff1a;输出&#xff1a; 3.2 vector iterator 的使用演示&#xff1a;输出&#xf…

网络基础学习:什么是tcp/ip协议

什么是tcp/ip协议 TCP/ip协议是什么东西&#xff1f;tcp/ip四层模型一、应用层二、传输层三、网络层四、网络接口层 TCP/ip协议是什么东西&#xff1f; TCP/IP是一种网络协议套件&#xff0c;它由传输控制协议&#xff08;TCP&#xff09;和互联网协议&#xff08;IP&#xff…

最大网络流算法之dinic算法详解

1、题目描述 On the Internet, machines (nodes) are richly interconnected, and many paths may exist between a given pair of nodes. The total message-carrying capacity (bandwidth) between two given nodes is the maximal amount of data per unit time that can b…

2016年上半年软件设计师下午试题

试题四 【说明】 模式匹配是指给定主串t和子串s&#xff0c;在主串 t 中寻找子串s的过程&#xff0c;其中s称为模式。如果匹配成功&#xff0c;返回s在t中的位置&#xff0c;否则返回-1 。 KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下&#xff1a; 在串…

【Python入门】Python的判断语句(if语句的基本格式)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

如何使用SpringMVC之常用注解

❣️关注专栏&#xff1a;JavaEE Spring MVC ⌛️ 1. Spring MVC 创建和连接⌛️ 1.1 RequestMapping⌛️ 1.2 GetMapping⌛️ 1.3 PostMapping ⌛️ 2. 获取参数⌛️ 2.1 传递/获取单个参数⌛️ 2.2 传递/获取多个参数⌛️ 2.3 传递/获取对象⌛️ 2.4 参数重命名⌛️ 2.4.1 …

【链表OJ题 5】牛客 CM11 链表分割

目录 题目来源&#xff1a; 代码实现&#xff1a; 1.带哨兵位的头结点 2.不带哨兵位的头结点 思路分析&#xff1a; 1.带哨兵位的头结点 实现过程&#xff1a; 易错点&#xff1a; 2.不带哨兵位的头结点 实现过程&#xff1a; 易错点&#xff1a; 题目来源&#xff…