当前位置: 首页 > news >正文

C++使用教程

目录

一、软件使用

二、C++基础规则补充

关键字

整型取值范围

浮点型取值范围

字符型使用规则

字符串型使用规则

布尔类型

常用的转义移字符 

三、数组、函数、指针、结构体补充

1.数组 

2.函数

声明:

分文件编写:

值传递:

 3.指针

空指针:

野指针:

利用指针访问数组中的元素:

利用指针在函数修改实参的值: 

地址传递:

const修饰指针:

1)const修饰指针--常量指针

 2)const修饰常量--指针常量

 3)const既修饰指针,又修饰常量

以冒泡排序为例三者的结合应用

4.结构体 

结构体嵌套

结构体做函数参数

结构体const使用场景 

四、C++语句及函数 

三目运算符

 switch语句

goto语句

system("pause")的使用

sizeof()的使用

stoi( )函数

一、软件使用

Visual Studio

打开在右侧的管理器源代码下创建文件

二、C++基础规则补充

关键字

定义常量变量(标识符)不可使用关键字作名字

标识符字母区分大小写

整型取值范围

short:1*10^4

int:1*10^9

long long:1*10^19

以上为约数

浮点型取值范围

float:7位有效数字

double:15位有效数字

字符型使用规则

1)用单引号将字符括起来

2)单引号中只能有一个字符,不能是字符串

3)其实际上储存的是字符的ASCII码

char name = 'a';

字符串型使用规则

加头文件#include<string>

布尔类型

true为1,false为0

bool a = true;
cout << a;

输出结果为1 

常用的转义移字符 

"\\":输出\

"\t":水平制表符(一共占8个位置,不满用空格补齐)

主要为了整齐的输入数据

cout << "aa\t123" << endl;
cout << "aaa\t123" << endl;
cout << "aaaa\t123" << endl;

三、数组、函数、指针、结构体补充

1.数组 

 直接输出数组名可以查看数组的首地址

若想具体查看其中某一个具体元素的地址,则在输出的时候前加& (取址符)

2.函数

声明:

函数的声明可以写多次,但定义只有一次

(声明即为函数的第一行)

分文件编写:

值传递:

即在函数调用时实参将数值传入给形参

值传递时,如果形参发生改变,并不会影响实参

比如,在写到交换函数时,会存在这样的错误写法:

#include<iostream>
using namespace std;
void swap(int x, int y)
{int f = x;x = y;y = f;
}
int main()
{int a = 10;int b = 20;swap(a, b);cout << a << ' ' << b;return 0;
}

这时运行结果输出的a,b的值并没有发生交换

原因在于形参只在函数内有用,当实参传递值给形参时,形参只是作为实参的临时拷贝 ,值传递时并没有改变实参。改变值需要传递地址进行调用,使函数内部可以操纵函数外部的变量

如果函数不需要返回值,声明可以写void,且可以不写return

 3.指针

通过指针间接访问内存

int a = 10;
int * p;
p = &a;
*p =1000;

这里输出p为a的地址

在指针前加*代表解引用,找到指针指向的内存中的数据 

空指针:

指针变量指向内存中编号为0的空间

用途:初始化指针变量

空指针指向的内存不可访问(0~255之间的内存编号是系统占用的)

int * p=NULL;
野指针:

 指针变量指向非法的内存空间(一种错误)

空指针和野指针都不是用户申请的空间,不要进行访问

利用指针访问数组中的元素:
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int* p = a;//a就是数组的首地址
cout << *p << endl;//访问第一个元素
p++;//让指针向后偏移四个字节
cout << *p << endl;//访问第二个元素
return 0;
利用指针在函数修改实参的值: 
地址传递:
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{int f = *x;*x = *y;*y = f;
}
int main()
{int a = 10;int b = 20;swap(&a,&b);cout << a << ' ' << b;return 0;
}
const修饰指针:

分三种情况

1)const修饰指针--常量指针

指针的指向可以改,指针指向的值不可以改

const int * p = &a;
 2)const修饰常量--指针常量

指针的指向不可以改,指针指向的值可以改

int * const p = &a;
 3)const既修饰指针,又修饰常量

指针的指向,指针指向的值都可以改

const int * const p = &a;
以冒泡排序为例三者的结合应用
#include<iostream>
using namespace std;
void Paixu(int*a, int len)
{for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - 1 - i; j++){if (a[j] > a[j + 1]){int f = a[j];a[j] = a[j + 1];a[j + 1] = f;}}}
}
void Prin(int* a, int len)
{for (int i = 0; i < len; i++){cout << a[i];}
}
int main()
{int a[10] = { 4,3,6,9,1,2,10,8,7,5 };int len = sizeof(a) / sizeof(a[0]);Paixu(a, len);Prin(a, len);return 0;
}

4.结构体 

#include<iostream>
using namespace std;struct Student
{string name;int age;double score;
}stu;//stu作为结构体变量

给结构体赋初始值:

int main()
{
//方法一stu.name = "小明";stu.age = 18;stu.score = 99.7;
//方法二struct Student stu[3] ={{ "小七", 19, 100},{ "小可", 23, 90 },{ "小时", 18, 80 }};
//方法三(结构体指针)Student* p = &stu[0];cout << p->age;return 0;
}
结构体嵌套

 赋值时:结构体变量1.结构体变量2

结构体做函数参数

构造函数

//值传递
void printStudent1(struct Student stu)
{//cout<<......
}
//地址传递
void printStudent2(struct Student* p)
{//cout<<......
}

 传递

//值传递
printStudent1(stu);
//地址传递
printStudent2(&stu);

结构体const使用场景 

在使用函数对结构体进行地址传递时,在函数中误改结构体中的值会影响到实参本身,当在函数中对传递的指针使用const,则使函数无法影响实参。

void printStudent(const Student *stu)
{//cout<<....
}

四、C++语句及函数 

三目运算符

格式:表达式1?表达式2:表达式3

如果表达式1成立,则执行表达式2;不成立则执行表达式3 

其返回的变量可以继续赋值

 switch语句

执行多条件分支语句

格式:switch(表达式)

          {

                case  结果1:执行语句;break;

                 ………………

                default:执行语句;break;(前面的都不符合)

          }

goto语句

无条件跳转语句

格式:goto 标记

即如果标记名称存在,在执行到goto语句时,会跳转到标记的位置

system("pause")的使用

1)通常用于在命令行窗口中暂停程序的执行,等待用户按下任意键继续

2)目的在于在程序执行完毕后保持命令行窗口打开,以便用户能够查看程序的输出结果

sizeof()的使用

显示数据类型占用内存的大小(字节)

括号里放数据类型或变量

常用于求数组中元素的个数

int num[5] = { 1,2,3,4,5 };
int a = sizeof(num);
int b = sizeof(num[0]);
int sum = sizeof(num) / sizeof(num[0]);

stoi( )函数

Ⅰ.在头文件#include<string>中

Ⅱ.其作用将数字字符串转化为int输出(可自动去除前导0)

Ⅲ.存在范围限制(int)

相关文章:

C++使用教程

目录 一、软件使用 二、C基础规则补充 关键字 整型取值范围 浮点型取值范围 字符型使用规则 字符串型使用规则 布尔类型 常用的转义移字符 三、数组、函数、指针、结构体补充 1.数组 2.函数 声明&#xff1a; 分文件编写&#xff1a; 值传递&#xff1a; 3.指…...

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

前提&#xff1a;nvidia、cuda、nvidia-fabricmanager等相关的组件已经在宿主机正确安装&#xff0c;如果没有安装可以参考我之前发的文章GPU A800 A100系列NVIDIA环境和PyTorch2.0基础环境配置【建议收藏】_a800多卡运行环境配置-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞8…...

设计模式(七)创建者模式之建造者模式

这里写目录标题 概述需求需求类图BikeBuilderMobikeBuilderOfoBuilderDirectorClientClient优缺点使用场景 模式扩展ComputerClient创建者模式对比工厂方法模式VS建造者模式抽象工厂模式VS建造者模式 总结 概述 建造者模式又叫生成器模式&#xff0c;是一种对象构建模式。它可…...

# class中的__call__方法解析

class中的__call__方法解析 文章目录 class中的__call__方法解析1. 为什么要有call&#xff0c;什么情况下用call&#xff1f;1.1 为什么要有 __call__ 方法1.2 没有 __call__ 方法是否可以1.3 使用 __call__ 方法的典型场景1.3.1 示例1&#xff1a;简单函数对象1.3.2 示例2&am…...

React逻辑复用的方式都有哪些

在日常开发中&#xff0c;能够优雅的复用组件和逻辑&#xff0c;是优秀开发者的职责。在react中&#xff0c;复用逻辑的方式有很多&#xff0c;可以适用于不同的业务场景。今天说三个比较有代表性的&#xff0c;Render Props、HOC、Hooks Render Props 创建一个接受函数作为其…...

【LinuxC语言】线程重入

文章目录 前言线程重入是什么线程重入实现示例代码总结前言 在并发编程中,我们经常需要处理多个线程同时访问和修改共享资源的问题。这可能会导致数据竞争和状态不一致,从而使程序的行为变得不可预测。为了解决这个问题,我们引入了一种称为“线程重入”的机制。线程重入,或…...

【Streamlit学习笔记】Streamlit-ECharts箱型图添加均值和最值label

Streamlit-ECharts Streamlit-ECharts是一个Streamlit组件&#xff0c;用于在Python应用程序中展示ECharts图表。ECharts是一个由百度开发的JavaScript数据可视化库Apache ECharts 安装模块库 pip install streamlitpip install streamlit-echarts绘制箱型图展示 在基础箱型…...

Docker镜像仓库:存储与分发Docker镜像的中央仓库

探索Docker镜像仓库&#xff1a;存储与分发Docker镜像的中央仓库 如果你是Docker的新手&#xff0c;或者已经在使用Docker但还不太了解Docker镜像仓库&#xff0c;那么这篇博客将是你的最佳指南。我们将从基础概念开始&#xff0c;逐步深入&#xff0c;帮助你全面掌握Docker注…...

FreeRTOS必考面试题及参考答案

什么是RTOS?FreeRTOS是什么?它主要应用于哪些领域? RTOS,即实时操作系统(Real-Time Operating System),是一种专门为实时应用程序设计的操作系统,它强调的是对外部事件的快速响应和可预测性。实时系统通常要求在严格的时限内完成关键任务,因此RTOS具备优先级调度、确…...

面试题2:从浏览器输入一个URL,到最终展示前端页面这一过程,会发生什么?

这是一个高频的面试题目。 题目答案是开放性的&#xff0c;一般以后端开发的角度回答。 当地址栏输入一个 URL 后&#xff1a; 一、首先会进行 DNS 域名解析 DNS 域名解析&#xff1a;网络上的设备都是通过 IP 地址&#xff0c;作为身份标识的。但是由于点分十进制的 IP 地址 …...

<Rust><iced><resvg>基于rust使用iced构建GUI实例:使用resvg库实现svg转png

前言 本文是使用rust库resvg来将svg图片转为png图片。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;resvg 代码分析 resvg是一个基于rust的svg渲染库&#xff0c;其官方地址&#xff1a; An SVG rendering li…...

面试突击:Java 中的泛型

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天想和大家聊聊 Java 中的泛型。 什么是泛型&#xff1f; Java 泛型&#xff08;Generics&#xff09; 是 JDK 5…...

3_2、MFC常用控件用法:组合框、滚动条和图片控件

MFC控件用法 1、组合框1.1 简介1.2 创建CComboBox类的主要成员函数 1.3 实例 2、滚动条控件2.1 简介2.2 创建CScrollBar类的主要成员函数 2.3 实例 3、图片控件3.1 简介3.2 创建图片控件静态加载图片图片控件动态加载图片 1、组合框 1.1 简介 组合框其实就是把一个编辑框和一…...

如何使用gprof对程序进行性能分析

如何使用gprof对程序进行性能分析 目录 1 gprof概述 2 gprof原理简述 3 gprof使用 3.1 gprof使用简述 3.2 gprof使用示例 4 小结 1 gprof概述 gprof 是 一个 GNU 的程序性能分析工具&#xff0c;可以用于分析C\C程序的执行性能。gprof工具可以统计出各个函数的调用次数、执…...

四川汇聚荣科技有限公司靠谱吗?

在如今这个信息爆炸的时代&#xff0c;了解一家公司是否靠谱对于消费者和合作伙伴来说至关重要。四川汇聚荣科技有限公司作为一家位于中国西部地区的企业&#xff0c;自然也受到了人们的关注。那么&#xff0c;这家公司究竟如何呢?接下来&#xff0c;我们将从多个角度进行深入…...

可灵王炸更新,图生视频、视频续写,最长可达3分钟!Runway 不香了 ...

现在视频大模型有多卷&#xff1f; Runway 刚在6月17号 发布Gen3 &#xff0c;坐上王座没几天&#xff1b; 可灵就在6月21日中午&#xff0c;重新夺回了王座&#xff01;发布了图生视频功能&#xff0c;视频续写功能&#xff01; 一张图概括&#xff1a; 二师兄和团队老师第一…...

oracle中使用临时表GLOBAL TEMPORARY TABLE

需要在存储过程中返回一个临时结果集&#xff0c;这个结果集又是多个语句通过循环查询出来的&#xff0c;这时候就想到了将结果插入到临时表中&#xff0c;然后返回临时表的数据的思路&#xff0c;于是有了以下操作&#xff1a; 1.创建临时表 -- Create table create global …...

Gradio入门—快速开始

目录 安装构建您的第一个演示分享您的演示核心 Gradio 课程聊天机器人gr.ChatInterface自定义演示gr.BlocksGradio Python 和 JavaScript 生态系统 Gradio 是一个开源 Python 软件包&#xff0c;可让您快速为机器学习模型、API 或任何任意 Python 函数构建演示或 Web 应用程序。…...

AOP应用之系统操作日志

本文演示下如何使用AOP&#xff0c;去实现系统操作日志功能。 实现步骤 引入AOP包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>2.6.6</version></de…...

海外云手机自动化管理,高效省力解决方案

不论是企业还是个人&#xff0c;对于海外社媒的营销都是需要自动化管理的&#xff0c;因为自动化管理不仅省时省力&#xff0c;而且还节约成本&#xff1b; 海外云手机的自动化管理意味着什么&#xff1f;那就是企业无需再投入大量的人力和时间去逐一操作和监控每一台设备。 通…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...