嵌入式入门Day38

news2025/1/8 18:56:36

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()
{
	//方法1
	std::cout << "hello" << std::endl;
	//方法2
	using std::cout;
	cout << "hello" << std::endl; 	//此处cout已经声明不需要标注命名空间,而endl需要
	//方法3
	using 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; //输出520
	cout << ::num << endl; //输出1314
	return 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.coloradmin.cn/o/2273372.html

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

相关文章

【JMM】Java 内存模型

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 前言2. JMM 内存模型内容3. JMM 内存模型简单执行示意图 ⚠️ 不要与 JVM 内存分布混为一谈论&#xff0c…

SEO新革命:如何通过Search Everywhere优化全面打破搜索壁垒

谷歌不再总是人们寻求答案的首选之地。他们越来越多地转向社交媒体、YouTube、亚马逊和 ChatGPT。这些平台本身已经成为搜索引擎。 因此&#xff0c;SEO 需要发展。仅靠搜索 “引擎” 优化已经不够了。品牌需要优化其在每个平台上的自然存在。 您需要一种新型的 SEO&#xff…

Spring 设计模式:经典设计模式

Spring 设计模式&#xff1a;经典设计模式 引言 Spring 框架广泛使用了经典设计模式。 这些模式在 Spring 内部发挥着重要作用。 通过理解这些设计模式在 Spring 中的应用&#xff0c;开发者可以更深入地掌握 Spring 框架的设计哲学和实现细节。 经典设计模式 控制反转&am…

“AI 视频图像识别系统,开启智能新视界

咱老百姓现在的生活啊&#xff0c;那是越来越离不开高科技了&#xff0c;就说这 AI 视频图像识别系统&#xff0c;听起来挺高大上&#xff0c;实际上已经悄无声息地融入到咱们日常的方方面面&#xff0c;给咱带来了超多便利。 先讲讲安防领域吧&#xff0c;这可是 AI 图像识别的…

开源AI智能名片2+1链动模式S2B2C商城小程序在商业流量获取中的应用研究

摘要&#xff1a; 随着互联网技术的迅猛发展&#xff0c;商业流量的获取已成为企业市场竞争中的关键环节。传统意义上的“客流量”在互联网语境下被赋予了新的内涵&#xff0c;即“商业流量”&#xff0c;其本质依然指向用户。在当前线上线下融合的商业环境中&#xff0c;流量…

【蓝桥杯研究生组】第14届Java试题答案整理

试题链接&#xff1a;链接 A题 满足条件的答案有&#xff1a;35813116 public class TianShu {public static void main(String[] args) {int ans 0;// 2000.1.1 - 2000000.1.1// 年份是月份的倍数&#xff0c;也是日的倍数for (int year2000; year<2000000; year) {for …

c/c++ 里的进程间通信 , 管道 pipe 编程举例

&#xff08;1&#xff09;以下是一个网上的使用 pipe 编程的范例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h>int main() {int pipefd…

RK3588+FPGA全国产异步LED显示屏控制卡/屏幕拼接解决方案

RK3588FPGA核心板采用Rockchip RK3588新一代旗舰 级八核64位处理器&#xff0c;支持8K视频编解码&#xff0c;多屏4K输出&#xff0c;可实现12屏联屏拼接、同显、异显&#xff0c;适配多种操作系统&#xff0c;广泛适用于展览展示、广告内容投放、新零售、商超等领域实现各种媒…

uniapp使用chooseLocation安卓篇

本文章全部以高德地图为例 代码 <view class"bottom"><button click"choose">定位</button> </view> choose() {uni.chooseLocation({success: function(res) {console.log(位置名称&#xff1a; res.name);console.log(详细地…

flutter 专题三十三 Flutter 重构去哪儿QTalk

QTalk 是去哪儿网内部的一个 IM 沟通工具&#xff0c;同时集成了很多内部的系统&#xff0c;比如 OA 审批&#xff0c;门禁打卡&#xff0c;请假审批&#xff0c;预定会议室&#xff0c;驼圈&#xff08;驼厂朋友圈&#xff09;等功能&#xff1b;方便内部办公沟通、交流的同时…

任务调度之Quartz(二):Quartz体系结构

1、Quartz 体系结构 由上一篇的Quartz基本使用可以发现&#xff0c;Quartz 主要包含一下几种角色&#xff1a; 1&#xff09;Job&#xff1a;也可以认为是JobDtetail&#xff0c;表示具体的调度任务 2&#xff09;Trigger&#xff1a;触发器&#xff0c;用于定义任务Job出发执行…

141.环形链表 142.环形链表II

141.环形链表 & 142.环形链表II 141.环形链表 思路&#xff1a;快慢指针 or 哈希表 快慢指针代码&#xff1a; class Solution { public:bool hasCycle(ListNode *head) {if(headnullptr||head->nextnullptr)return false;ListNode *fasthead->next; //不能设置成…

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要&#xff0c;因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误&#xff0c;提升代码质量和系统稳定性。同时&#xff0c;它促进了团队成员间的沟通与协作&#xff0c;确保项目按时交付。此外&#xff0c;…

uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端

采用 uniapp-vue3 实现, 是一款带有丝滑动画效果的单选框组件&#xff0c;提供点状、条状的动画过渡效果&#xff0c;支持多项自定义配置&#xff0c;适配 web、H5、微信小程序&#xff08;其他平台小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&…

python vue3实现大文件分段续传(断点续传)--带暂停和继续功能

后端内容无变化具体设置可参考上一篇点击进入上一篇&#xff0c;需要注意的是big_file_upload_backend/settings.py下的 是statics 多个s其实无所谓&#xff0c;但是要一致 STATIC_URL "statics/" STATICFILES_DIRS [os.path.join(BASE_DIR, "../statics&quo…

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯&#xff08;十一&#xff09; 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

初学Linux电源管理

学习文档出处&#xff1a; 万字整理 | 深入理解Linux电源管理&#xff1a;万字整理 | 深入理解Linux电源管理-CSDN博客 电源管理 因为设备需要用电&#xff0c;而且设备中的各个硬件所需要的电压是不一样的。故计算机需要对硬件的电源状态管理。但是电能并不是免费的&#x…

若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)

若依中Feign调用具体使用 注意&#xff1a;以下所有步骤实现的前提是需要在启动类上加入注解 EnableRyFeignClients 主要是为开启feign接口扫描 1.创建服务提供者(provider) 导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的EnableRyF…

CS·GO搬砖流程详细版

说简单点&#xff0c;就是Steam买了然后BUFF上卖&#xff0c;或许大家都知道这点&#xff0c;但就是一些操作和细节问题没那么明白。我相信&#xff0c;你看完这篇文章以后&#xff0c;至少会有新的认知。 好吧&#xff0c;废话少说&#xff0c;直接上实操&#xff01; 首先准…

每日一题:链表中环的入口结点

文章目录 判断链表环的入口节点描述数据范围&#xff1a;复杂度要求&#xff1a;输入输出 示例代码实现思路解析注意事项&#xff1a; 判断链表环的入口节点 描述 给定一个链表&#xff0c;判断该链表是否存在环。如果存在环&#xff0c;返回环的入口节点&#xff1b;如果不存…