嵌入式入门Day38

C++ Day1

  • 第一个C++程序
  • C++中的输入输出
    • 输出操作
      • cout
      • cin
      • 练习
    • 命名空间
      • 使用方法
      • 自定义命名空间
      • 冲突问题
  • C++对字符串的扩充
    • C++风格字符串的使用
      • 定义以及初始化
      • C++风格字符串与C风格字符串的转换
      • C++风格的字符串的关系运算
      • 常用的成员变量
      • 输入方法
  • 布尔类型
  • C++对堆区空间使用的扩充
  • 作业

在这里插入图片描述

第一个C++程序

#include <iostream>using namespace std;
//命名空间的声明语句
//using:使用命名空间的关键字
//namespace:命名空间的关键字
//std:标准命名空间,系统提供的所有名字,都放放入到该命名空间中int main() 		//默认无参的主程序
{cout << "Hello World!" << endl;//使用iostream中的类对象cout输出数据hello world// <<:插入运算符(不是左移运算),C++重载的运算符,与cout搭配用于输出// endl:end line,结束该行,即换行return 0;
}

C++中的输入输出

输出操作

cout

  1. 在C++中, 向终端输出数据,使用的是ostream提供的一个类对象 cout,搭配<<插入运算符使用
  2. cout输出数据时,不需要使用格式控制符,会自动识别要输出的数据的数据类型
  3. cout输出数据时,可以级联输出数据,级联输出时,需要使用多个插入运算符

cin

  1. 在C++中输入使用的是istream提供的一个类对象 cin,搭配>>提取运算符使用
  2. cin输入的时候也不需要使用格式控制符,会自动识别

练习

使用cout输出斐波那契数列前20项

#include <iostream>using namespace std;int main()
{//初始化斐波那契数列前两项int numb[20] = {1 ,1};int i = 0;//后面的项均为前两项的和for( i = 2; i < 20; i++){numb[i] = numb[i - 1] + numb[i - 2];}//循环输出for( i = 0; i < 20; i++){cout << numb[i] << '\t';}cout << endl;return 0;
}

命名空间

  1. 命名空间是防止在多人协同开发过程中出现命名冲突的问题
  2. 相当于给定义的变量名函数名等标识符取一个“姓氏”

使用方法

  1. 使用时单独标注命名空间
  2. 为单个标识符声明,声明后将不需要为这个变量标注他的命名空间
  3. 直接声明整个命名空间,声明后每一个标识符都不需要再单独标志的了

#include <iostream>int main()
{//方法1std::cout << "hello" << std::endl;//方法2using std::cout;cout << "hello" << std::endl; 	//此处cout已经声明不需要标注命名空间,而endl需要//方法3using namespace std;cout << "hello" << endl; 	//整个空间均被声明,都可以直接使用return 0;
}

自定义命名空间

//定义格式
namespace 空间名 {... //各种定义
}

同一作用域下,可以定义多个重名的命名空间,他们都将会是同一空间,里面的变量名等不允许相同

冲突问题

如果不加命名空间标识的话,当声明的命名空间之中,或者和局部变量以及全局变量有冲突的时候,就不能使用后两种方法来访问了,只能用方法1标识此时使用的到底是哪个命名空间里面的变量
本文件中的局部变量和全局变量都默认放入匿名命名空间中

#include <iostream>namespace EKKO {int num = 520;
}
using namespace std;int main(void)
{int num = 1314;using namespace EKKO;//此后有两个num,使用是必须标注命名空间cout << EKKO::num << endl; //输出520cout << ::num << endl; //输出1314return 0;
}

C++对字符串的扩充

C语言中没有字符串类型,所有字符串的操作都是使用字符数组进行的
C++中也支持这种字符串,并且扩充了字符串类型string,使用时需要引入头文件 string

C++风格字符串的使用

定义以及初始化

#include <iostream>
#include <string>using namespace std;int main(void)
{//定义字符串string s1;	cout << s1 << endl; //默认是空串//定义并初始化字符串string s2 = "HELLO";//C++风格的字符串支持使用=直接赋值//下面是其他的初始化方法string s3 = {"HELLO"};string s4("HELLO");string s5(5, 'A'); 	//该串的内容为:AAAAA//赋值操作s1 = "与众不同";//可以直接赋值s1 = s2+s3; //将会把s3拼接到s2后面并赋值给s1//注意使用字符串的加法操作时,必须有一个是字符串变量,如果两个都是字符串常量的话将会报错return 0;
}

C++风格字符串与C风格字符串的转换

#include <iostream>
#include <string>
#include <cstring>   //同#include <string.h>
using namespace std;
int main(void)
{char str[20] = "Hello";//C风格可以直接转换为C++风格string s = str;//C++风格转换到C风格则需调用成员函数strcpy( str, s1.c_str());strcpy( str, s1.data());//两个成员函数的返回值都是 char *类型,指向字符串的开头,这样才符合C风格的使用方法//本质上而言就是C风格的函数无法识别string类,需要一个char *类型的参数return 0;
}

C++风格的字符串的关系运算

C++风格的字符串可以直接使用关系运算符
== 即可完成以前strcmp的功能

常用的成员变量

  1. size()或者length():求该字符串的实际长度
  2. 访问字符串的成员
    • 使用成员函数 at() 完成,会进行下标越界检查
    • 使用中括号运算符完成,不进行下标越界检查
  3. 判空:empty(),如果字符串为空,则返回真,否则返回假
  4. 清空:clear() 将当前字符串清空
  5. 尾插:push_back() 在字符串尾部插入一个字符
  6. 尾删:pop_back() 删除字符串尾部的那个字符

输入方法

  1. 不带空格的字符串可以直接使用cin输入
  2. 带空格的字符串需要使用函数getline()来完成

布尔类型

C++添加的新类型,是基本数据类型
bool类型的值只有两个:true、false
以上三个单词均为C++新添加的关键词
默认输入时bool类型只会输出0或者1,使用boolalpha关键字来修改cout可以设置为单词输出输出为true或者false,使用noboolalpha来取消
bool类型占一个字节

C++对堆区空间使用的扩充

引入了两个新的关键字来申请和释放堆区空间
new 和 delete
申请方法

//数据类型 *指针名 = new 数据类型;  new是基于数据类型大小来申请的,而不是malloc的根据字节数来申请
int *p = new int;
//申请并且初始化
double *dptr = new double(3.13);
float *fptr = new float{33.33};//连续空间的申请
int *ptr = new int[5];
//连续申请并且初始化
int *sptr = new int[5]{1,2,3,4,5};//释放堆区空间
delete p;
p = NULL;
delete dptr;
dptr = NULL;
delete fptr;
fptr = NULL;
delete [] ptr;
ptr = NULL;
delete [] sptr;
sptr = NULL;

作业

要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数

#include <iostream>
#include <string>using namespace std;int main()
{//空间申请int *ptr = new int[5];//信息提示cout << "请输入学生的成绩:";//循环输入for(int i = 0; i < 5; i++) {cin >> ptr[i];}//冒泡排序for(int i = 0; i < 5; i++){for(int j = 1; j < 5-i; j++){if(ptr[j] > ptr[j-1]){int temp = ptr[j];ptr[j] = ptr[j-1];ptr[j-1] = temp;}}}//输出成绩for(int i = 0; i < 5; i++){cout << ptr[i] << " ";}cout << endl;//释放堆区空间delete [] ptr;ptr = NULL;return 0;
}

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

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

相关文章

kubernetes第七天

1.影响pod调度的因素 nodeName 节点名 resources 资源限制 hostNetwork 宿主机网络 污点 污点容忍 Pod亲和性 Pod反亲和性 节点亲和性 2.污点 通常是作用于worker节点上&#xff0c;其可以影响pod的调度 语法&#xff1a;key[value]:effect effect:[ɪˈfek…

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数&#xff0c;实现直流无刷电机控制&#x…

Google发布图像生成新工具Whisk:无需复杂提示词,使用图像和人工智能将想法可视化并重新混合

Whisk 是 Google Labs 的一项新实验&#xff0c;可使用图像进行快速而有趣的创作过程。Whisk不会生成带有长篇详细文本提示的图像&#xff0c;而是使用图像进行提示。只需拖入图像&#xff0c;即可开始创建。 whisk总结如下&#xff1a; Whisk 是 Google 实验室最新的生成图像实…

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法&#xff0c;主要考察开发经验与技术水平&#xff0c;回答不佳会影响面试印象。提供四个回答方向&#xff0c;准备其中一个方向即可。 1、设计模式应用方向 以登录为例&#xff0c;未…

MySQL 子查询(重在练习)

第九章: 子查询 1.子查询的需求分析和问题解决 1.1基本使用 子查询(内查询)在主查询之前一次执行完成 子查询的结果被主查询(外查询)调用 注意事项 子查询要包含在括号内 将子查询放在比较条件的右侧 单行操作符对应单行子查询,多行操作符对应多行子查询 1.2子查询的分类…

海外招聘丨卡尔斯塔德大学—互联网隐私和安全副高级讲师

雇主简介 卡尔斯塔德大学以研究、教育和合作为基础。通过让社区参与知识发展&#xff0c;卡尔斯塔德大学为地区、国家和国际研究和教育发展做出了贡献&#xff0c;旨在提高可持续性、民主和健康。我们富有创造力的学术环境以好奇心、勇气和毅力为特征。通过采取批判性方法&…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中&#xff0c;图片上传是一个常见的功能&#xff0c;尤其是在个人中心或社交平台场景中&#xff0c;用户经常需要上传图片到服务器&#xff0c;用以展示个人风采或记录美好瞬间。然而&#xff0c;实现多图片上传的过程中&#xff0c;如何设计高效的上传逻辑并…

Cannot run program “docker“: CreateProcess error=2,系统找不到指定的文件

今天被这个问题坑了, 网上教程全是直接装插件就行 ,结果我连接可以成功 但是执行docker compose 就会出错, 检测配置 报错com.intellil,execution,process.ProcessNotCreatedException: Cannot run program “docker”: CreateProcess error2,系统找不到指定的文件 gpt 要我去…

Blender 2D动画与MATLAB数学建模:跨界融合的创新实践探索

文章目录 一、数据交换&#xff1a;从科学计算到创意表达的桥梁二、脚本自动化&#xff1a;从手动操作到无缝连接的升级三、跨界融合的创新实践意义《Blender 2D动画制作从入门到精通》亮点内容简介作者简介 《MATLAB数学建模从入门到精通》亮点内容简介作者简介 在数字创意与科…

HarmonyOS Next 日志工具介绍

HarmonyOS Next 日志工具介绍 在HarmonyOS Next开发中&#xff0c;日志是我们调试定位问题的主要手段&#xff0c;不管是hilog还是console&#xff0c;最终都可以输出到DevEco Studio的日志模块中&#xff1a; 在这里可以过滤应用进程、日志级别、日志内容呢&#xff0c;也可…

NUTTX移植到STM32

STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板&#xff1a;DshanMCUF407 官方开发文档&#xff1a;安装 — NuttX latest 文档 参考文档&…

【微服务】4、服务保护

微服务架构与组件介绍 单体架构拆分&#xff1a;黑马商城早期为单体架构&#xff0c;后拆分为微服务架构。跨服务调用与组件使用 服务拆分后存在跨服务远程调用&#xff0c;如下单需查询商品信息&#xff0c;使用openfeign组件解决。服务间调用关系复杂&#xff0c;需维护服务…

【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)

未经许可,不得转载。 我将与大家分享我在 Bugcrowd 的某个项目中发现的一个漏洞,该项目中有一个“用户模拟”功能。 什么是用户模拟? 用户模拟允许管理员在不知晓用户凭据的情况下“以用户身份登录”。这种功能常见于管理员需要调试问题、审查用户权限或解决投诉的平台中。…

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项&#xff0c;点击 下拉&#xff0c;找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中&#xff0c;【 MySQL Yum Repository 】链接为在线仓库安装…

【Spring Boot 应用开发】-01 初识

特性 Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是帮助开发者快速创建独立的、生产级的基于 Spring 框架的应用程序。以下是 Spring Boot 的一些主要特点&#xff1a; 简化配置&#xff1a;Spring Boot 提供了自动配置机制&#xff0c;能够根据类路径…

AR 眼镜之-拍照/录像动效切换-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 拍照/录像动效切换 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;第一阶段动效 2&#xff09;第二阶段动效 2. &#x1f4a0; 默认代码配置 2.1 XML 初始布局 2.2 监听滑动对 View 改变 3. ⚛️…

django解决跨域问题

# 1.安装django-cors-headers 库 pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple2.添加到应用程序中 添加 corsheaders 到你的 INSTALLED_APPS 设置中&#xff1a; INSTALLED_APPS [...corsheaders,... ]3.添加中间件 MIDDLEWARE [...cor…

Ubuntu Bash工具

Ubuntu Bash工具 &#x1f4bb;⚡ Ubuntu Bash 工具&#x1f528; 指令列表1. &#x1f50b; 查看电池信息 (-b)2. &#x1f4bb; 查看 CPU 和内存使用情况 (-m)3. &#x1f504; 旋转屏幕 (-r)4. &#x1f513; 解锁屏幕 (-s)5. &#x1f310; 设置代理 (-p <proxy_url>…

【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则

在 Go 语言中&#xff0c;字符串的比较是基于字典顺序进行的。 字典顺序的比较规则&#xff1a; 比较两个字符串从左到右逐个字符的Unicode码点值&#xff0c; 若比较结果不相等则将此结果作为字符串大小的结果&#xff0c; 若比较结果相等则比较下一位&#xff0c; 若其中一个…