当前位置: 首页 > 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;那就是企业无需再投入大量的人力和时间去逐一操作和监控每一台设备。 通…...

STM32CubeIDE开发环境详解与实战指南

STM32CubeIDE开发环境全解析&#xff1a;从入门到实战1. 开发环境概述1.1 STM32CubeIDE核心特性STM32CubeIDE是基于Eclipse框架的集成开发环境&#xff0c;专为STM32微控制器设计。其主要技术特性包括&#xff1a;集成STM32CubeMX配置工具内置GCC编译工具链支持GDB调试接口跨平…...

告别公式复制烦恼!LaTeX2Word-Equation让跨平台公式处理效率提升10倍

告别公式复制烦恼&#xff01;LaTeX2Word-Equation让跨平台公式处理效率提升10倍 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 痛点诊断&#…...

用74LS175D和面包板,手把手教你做一个四人抢答器(附完整电路图)

从零搭建四人抢答器&#xff1a;74LS175D芯片实战指南 在电子技术学习过程中&#xff0c;没有什么比亲手搭建一个实际可用的电路更能加深理解了。今天&#xff0c;我们将使用经典的74LS175D芯片&#xff0c;配合面包板、LED和按键开关&#xff0c;一步步构建一个功能完整的四人…...

ComfyUI自定义节点开发指南:从零构建你的专属AI工具链

1. 为什么需要自定义ComfyUI节点&#xff1f; 第一次用ComfyUI做AI绘画时&#xff0c;我就被它灵活的节点式操作吸引了。但用着用着发现一个问题&#xff1a;官方提供的节点虽然强大&#xff0c;但总有些特殊需求无法满足。比如想给生成的图片自动打水印、批量处理文件夹里的图…...

Ryujinx零门槛全攻略:开源Switch模拟器从入门到精通

Ryujinx零门槛全攻略&#xff1a;开源Switch模拟器从入门到精通 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 价值定位&#xff1a;为什么Ryujinx能重新定义Switch游戏体验&#xff…...

GME-Qwen2-VL-2B助力AIGC内容创作:自动为图片生成创意文案与故事

GME-Qwen2-VL-2B助力AIGC内容创作&#xff1a;自动为图片生成创意文案与故事 你有没有过这样的经历&#xff1f;面对一张精心拍摄的照片&#xff0c;却怎么也憋不出几句像样的文案。或者&#xff0c;看着一张充满故事感的图片&#xff0c;脑海里思绪万千&#xff0c;落到笔尖却…...

2022 年 6 月青少年软编等考 C 语言一级真题解析

目录T1. 倒序输出思路分析T2. 平方差计算思路分析T3. 最小的数思路分析T4. 计算成绩优秀的人数思路分析T5. 开关灯思路分析T1. 倒序输出 题目链接&#xff1a;SOJ D1166 依次输入 444 个整数 aaa、bbb、ccc、ddd&#xff0c;将他们倒序输出&#xff0c;即依次输出 ddd、ccc、…...

Luau数据流分析技术:如何实现精准的类型推断

Luau数据流分析技术&#xff1a;如何实现精准的类型推断 【免费下载链接】luau A fast, small, safe, gradually typed embeddable scripting language derived from Lua 项目地址: https://gitcode.com/gh_mirrors/lu/luau Luau是一种快速、小巧、安全且支持渐进类型化…...

Java 设计模式・策略模式篇:从思想到代码实现

一、行为型模式 在面向对象的世界里&#xff0c;如何优雅地组织对象间的交互、分配职责&#xff0c;是每一位开发者都会反复思考的问题。直接硬编码交互逻辑固然简单&#xff0c;但当业务复杂度上升、对象协作关系变得错综复杂时&#xff0c;这种方式就会让代码变得僵化、难以…...

多模态数据挖掘前沿:生物医学与情感分析领域论文深度解析

多模态数据挖掘前沿&#xff1a;生物医学与情感分析领域论文深度解析 在人工智能与大数据技术飞速发展的当下&#xff0c;多模态数据因能更全面、立体地刻画研究对象&#xff0c;已成为科研领域的核心研究方向。本文将深度解析两篇聚焦多模态数据挖掘的重磅论文——《多模态生物…...