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

[C++]笔记-知识点总结

一.输入密码时候,隐藏密码

  • 用函数getch(),头文件#include<conio.h>
  • 输入一个字符时候不会回显,getc会回显
  • 实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch()函数读入回车键时候,返回的是\r,所以如果是\r,则将字符数组的末尾加上\0,再跳出循环

//密码输入
void Input_pwd(char* pwd,int size) {char c = 0;int i = 0;while (1) {c = getch();//不会回显if (c == '\r') {//getch函数读到回车符号为\rpwd[i] = '\0';break;}else {cout << '*';pwd[i++] = c;}}cout << endl;
}

二.解决多文件开发头文件重复包含的方法

  • 由于使用多文件开发,需要再cpp文件里面包含.h文件,再将多个.h文件相互包含,可能会出现重复包含的情况,
  • 解决方法 : VS里面特定的方式是,在.h文件的开头加上 #pragma once
  • 公用方法 :在.h文件里面用宏定义,
    #例如在cs.h文件内,宏名一般用该格式,没要求
    #ifndef _CS_H_
    #define
    //代码块#endif//对应的是ifndefine

三.指针数组与数组指针

  • 数组指针 例如 int (*p)[3];
  • 数组指针访问方法 ( p  = &A[0] )
    • 数组法 : (*p)[j];
    • 指针法 : *((*p)+j)     *( *(p + i) + j)
  • 指针数组 例如 int *p[3];.每个元素都是一个变量的地址

四.void空指针

  • 其他类型可以自动转换为void类型,但是void类型要转换成其他类型需要强制类型转换
  • 空指针不允许进行算术运算,因为大小不知道
  • 空指针里面仍然存储的是变量的地址,只是类型不知道
	int a = 10;int *p1 = &a;void* p = &a;//cout << *p << endl; error 空指针//p1 = p;//errorp1 = (int *)p;//需要进行强制类型转换p = p1;//可以,其他类型可以转换为空指针

5.函数指针

  • 函数指针的定义 : 把函数声明移过来,把函数名改为(* 函数指针名)

例如

//函数
int compare_int (const int *,const int *);//该函数的指针 int (*fp) (const int *,const int *);//给该指针赋值fp = &compare_int;//传参数两种方式(*fp)(&x,&y);//第一种,按普通指针解引的方式进行调用
fp(&x,&y);//第二种,直接调用//(*fp)等同于compare_int
  • qsort()函数
    • 语法 qsort(数组名,数组元素个数,每个元素占的字节,cmp函数);
    • qsort参数为void类型指针,可以比较任何数据类型
    • cmp函数格式
int cmp(const void *a, const void *b) {return *(int*)a - *(int*)b ;//由小到大排序//换成b-a之后是从大到小排列
}
  • 测试 :
int cmp(const void *a, const void *b) {return *(int*)b - *(int*)a ;
}
int main() {int q[2] = { 1,2 };qsort(q, sizeof(q) / sizeof(int), sizeof(int), &cmp);cout << q[0] << " " << q[1] << endl;}
  • 字符比较,混杂大小写,在比较时候不考虑大小写的方法

 六.引用类型

  • 引用变量本身也会占内存,内存的大小等于一个指针变量的大小
  • 对同一内存空间可以取好几个别名
  • 引用可以定义多个,引用也有自己的空间,引用变量像常指针,编辑器在编译时会将引用改为指针
  • 在c++的底层引用就是用指针实现的 Type& name  <----->  Type* const name
  • 在使用的角度,引用会让人误会是一个别名,没有自己的存储空间,这是c++为了实用性而做出的细节隐藏
#include <iostream>
#include <stdio.h>using namespace std;
int swap1(int& a, int& b) {int temp = a;a = b;b = temp;return 0;
}int swap2(int* const a, int* const b) {int temp = *a;*a = *b;*b = temp;return 0;
}
int main() {int x = 10;int y = 100;swap1(x, y);cout << "x = " << x << " y = " << y << endl;swap2(&x, &y);cout << "x = " << x << " y = " << y << endl;
}//编辑器会将引用类型的swap1在编译时候转换成swap2的形式

七.指针引用

  • 可以代替二级指针

int home1(int ** meipo) {static int boy = 18;*meipo = &boy;return 0;
}int home2(int* & meipo) {static int boy = 18;meipo = &boy;return 0;
}
int main() {int* meipo = nullptr;home1(&meipo);cout << "meipo = " << *meipo << endl;//指针引用,可以代替二级指针,home2(meipo);cout << "meipo = " << *meipo << endl;return 0;
}

八.内存复制函数

  • 将一段内存里面的数据复制到另一段内存种
memcpy(&b,&a,sizeof(a));
//将a变量内存,复制给b内存一份,大小为a变量的大小

相关文章:

[C++]笔记-知识点总结

一.输入密码时候,隐藏密码 用函数getch(),头文件#include<conio.h>输入一个字符时候不会回显,getc会回显实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch…...

1.RabbitMQ介绍

一、MQ是什么&#xff1f;为什么使用它 MQ&#xff08;Message Queue&#xff0c;简称MQ&#xff09;被称为消息队列。 是一种用于在应用程序之间传递消息的通信方式。它是一种异步通信模式&#xff0c;允许不同的应用程序、服务或组件之间通过将消息放入队列中来进行通信。这…...

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用 一、中间件相关知识点二、摘要三、正文四、总结一、中间件相关知识点 软考高级系统架构设计师:构件与中间件技术二、摘要 我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作…...

【Java架构-包管理工具】-Maven进阶(二)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具&#xff0c;在此咱们由浅入深&#xff0c;分三篇文章&#xff08;Maven基础、Maven进阶、私服搭建&#xff09;来深入学习Maven&#xff0c;此篇为开篇主要介绍Maven进阶知识&#xff0c;包含坐标、依赖、仓库、生…...

『C语言入门』分支和循环语句

文章目录 引言一、什么是语句&#xff1f;1.1表达式语句1.2赋值语句1.3函数调用语句1.4复合语句1.5空语句1.6控制语句 二、分支语句2.1 if语句2.1.1基本语法2.1.2使用else语句2.1.3嵌套if语句2.1.4多层if-else语句 2.2 switch语句2.2.1基本语法2.2.2示例2.2.3穿透 三、循环语句…...

【给自己挖个坑】三维视频重建(NSR技术)-KIRI Engine

文章目录 以下是我和AI的对话通过手机拍摄物体的视频&#xff0c;再根据视频生成三维模型&#xff0c;这个可实现吗我想开发类似上面的手机应用程序&#xff0c;如何开发呢 看了以上回答&#xff0c;还是洗洗睡吧NSR技术的实现原理是什么呢有案例吗我是名Java工程师&#xff0c…...

Chrome历史版本下载和Selenium驱动版本下载

Python自动化必备&#xff1a; Selenium驱动版本下载 http://chromedriver.storage.googleapis.com/index.html Chrome浏览器历史版本下载 https://www.slimjet.com/chrome/google-chrome-old-version.php...

联合注入步骤

使用场景&#xff1a; 有回显&#xff0c;可以看到某些字段的回显信息 像下面的有具体的回显信息 一、判断注入位点 在原始的id&#xff08;参数&#xff09;的输入后面添加额外的条件 如果and 11 有结果&#xff0c;and10没有结果输出&#xff0c; 就说明我们添加的额外条件…...

后端项目开发:整合redis缓存

因为各种场合比如门户和后台&#xff0c;需要不同的redis配置&#xff0c;我们在common包配置通用的reids配置。 1.新建service目录&#xff0c;建立RedisService服务接口&#xff0c;同时编写工具类实现该接口。 public interface RedisService {/*** 保存属性*/void set(Str…...

美国访问学者签证好办吗?

近年来&#xff0c;随着国际交流与合作的不断深入&#xff0c;许多人对于美国访问学者签证的办理情况产生了浓厚的兴趣。那么&#xff0c;美国访问学者签证到底好办吗&#xff1f;让知识人网小编带您一起了解一下。 首先&#xff0c;美国作为世界上的科研、教育和创新中心之一&…...

Linux之基础IO文件系统讲解

基础IO文件系统讲解 回顾C语言读写文件读文件操作写文件操作输出信息到显示器的方法stdin & stdout & stderr总结 系统文件IOIO接口介绍文件描述符fd文件描述符的分配规则C标准库文件操作函数简易模拟实现重定向dup2 系统调用在minishell中添加重定向功能 FILE文件系统…...

Django主要特点

Django 是一个开源的 Python Web 开发框架&#xff0c;它提供了一系列的工具和功能&#xff0c;帮助开发人员快速、高效地构建 Web 应用程序。 以下是 Django 的一些主要特点&#xff1a; 1. 强大的 ORM&#xff08;对象关系映射&#xff09;&#xff1a; Django 提供了一个…...

element-ui中的el-table合并单元格

描述&#xff1a; 在写项目的时候有时候会经常遇到把行和列合并起来的情况&#xff0c;因为有些数据是重复渲染的&#xff0c;不合并行列会使表格看起来非常的混乱&#xff0c;如下&#xff1a; 而我们想要的数据是下面这种情况&#xff0c;将重复的行进行合并&#xff0c;使表…...

自组织地图 (SOM) — 介绍、解释和实现

自组织地图 &#xff08;SOM&#xff09; — 介绍、解释和实现 一、说明 什么是SOM&#xff08;self orgnize map&#xff09;自组织地图&#xff0c;是GNN类似的图神经网络的概念。因为神经网络实质上可以解释为二部图的权重&#xff0c;因此无论GNN还是SOM都有共同的神经网络…...

Arduino程序设计(四)按键消抖+按键计数

按键消抖按键计数 前言一、按键消抖二、按键计数1、示例代码2、按键计数实验 参考资料 前言 本文主要介绍两种按键控制LED实验&#xff1a;第一种是采用软件消抖的方法检测按键按下的效果&#xff1b;第二种是根据按键按下次数&#xff0c;四个LED灯呈现不同的流水灯效果。 一…...

Scrum Guide Chinese Simplified.pdf

敏捷指南...

Module not found: Error: Can‘t resolve ‘vue-pdf‘ in ‘xxx‘

使用命令npm run serve时vue项目报错&#xff1a; Module not found: Error: Cant resolve vue-pdf in xxx 解决方案&#xff1a; 运行命令&#xff1a; npm install vue-pdf --save --legacy-peer-deps 即可解决。 再次顺利执行npm run serve...

ELK之LogStash介绍及安装配置

一、logstash简介 集中、转换和存储数据 Logstash 是免费且开放的服务器端数据处理管道&#xff0c;能够从多个来源采集数据&#xff0c;转换数据&#xff0c;然后将数据发送到您最喜欢的“存储库”中。 Logstash 能够动态地采集、转换和传输数据&#xff0c;不受格式或复杂度的…...

docker学习(1)

1、容器与虚拟机的对比&#xff1a; 虚拟机&#xff08;virtual machine&#xff09;就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统&#xff0c;比如在Windows10系统里面运行Linux系统CentOS7。 应用程序对此毫无感知&#xff0c;因为虚拟机看…...

UE5 Niagara基础知识讲解

文章目录 前言官方文档发射器生成(Emitter Spawn)发射器更新(Emitter Update)Spawn Rate(生成速率)粒子生成(Particle Spawn)Initialize Particle(初始化粒子)粒子生命周期粒子颜色粒子大小Shape Location(形状位置)形状位置Add Velocity(添加速度)粒子速度Curl …...

缓存穿透、缓存击穿和缓存雪崩

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…...

自动化编排工具Terraform介绍(一)

Terraform是什么&#xff1f;: Terraform 是 HashiCorp 公司旗下的 Provision Infrastructure 产品, 是 AWS APN Technology Partner 与 AWS DevOps Competency Partner。Terraform 是一个 IT 基础架构自动化编排工具&#xff0c;它的口号是“Write, Plan, and Create …...

zhm_real/MotionPlanning运动规划库中A*算法源码详细解读

本文主要对zhm_real/MotionPlanning运动规划库中A*算法源码进行详细解读&#xff0c;即对astar.py文件中的内容进行详细的解读&#xff0c;另外本文是 Hybrid A * 算法源码解读的前置文章&#xff0c;为后续解读Hybrid A * 算法源码做铺垫。 astar.py文件中的源码如下&#xff…...

SpringMVC中Controller层获取前端请求参数的几种方式

SpringMVC中Controller层获取前端请求参数的几种方式 1、SpringMVC自动绑定2、使用RequestParam 注解进行接收3、RequestBody注解&#xff08;1&#xff09; 使用实体来接收JSON&#xff08;2&#xff09;使用 Map 集合接收JSON&#xff08;3&#xff09; 使用 List集合接收JSO…...

记Flask-Migrate迁移数据库失败的两个Bug——详解循环导入问题

文章目录 Flask-Migrate迁移数据库失败的两个Bug1、找不到数据库&#xff1a;Unknown database ***2、迁移后没有效果&#xff1a;No changes in schema detected. Flask-Migrate迁移数据库失败的两个Bug 1、找不到数据库&#xff1a;Unknown database ‘***’ 若还没有创建数…...

在线求助。。npm i 报错,连公司内部网,无法连外网

各位前端朋友 &#xff0c;有没有遇到我这种npm i 报错的问题。 公司内网&#xff0c;无法连外网&#xff0c;使用公司内部的Nexus镜像源 我在公司内网执行npm i 报错&#xff0c;报network连接失败。 我都已经在npm设置了内部镜像源&#xff0c;它为啥还要去外网下载呢。而…...

TCP/UDP/IP协议简介

IP协议简介 特指为实现一个相互连接的网络系统上从源地址到目的地址传输数据包(互联网数据包) 所提供必要功能的协议 特点&#xff1a; 不可靠&#xff1a;不能保证IP数据包能够成功的到达它的目的地只能提供尽力而为的传输服务。 无连接&#xff1a;IP并不维护任何关于后续数…...

写点感想3:关于本人近期的说明与一点感受

按照我今年以来7月之前的更新频率&#xff0c;我已经好久没有更新博文了(或者说静下来写点东西)。 我其实有规划蛮多的有意思的且想要去研究下的topic&#xff0c;最近好久没能更新主要的原因包括&#xff1a; 开启了我职业生涯的第二份工作&#xff1a;在某研究院工作2年零3…...

opencv-全景图像拼接

运行环境 python3.6 opencv 3.4.1.15 stitcher.py import numpy as np import cv2class Stitcher:#拼接函数def stitch(self, images, ratio0.75, reprojThresh4.0,showMatchesFalse):#获取输入图片(imageB, imageA) images#检测A、B图片的SIFT关键特征点&#xff0c;并计算…...

如何将下载的安装包导入PyCharm

1. 下载安装包 这里以pyke为例。下载好之后解压缩&#xff0c;然后放入/Lib/site-packages/pyke-1.1.1 2. 打开PyCharm的终端进行安装 python setup.py install 3. 安装好之后导入即可使用 import pyke...

网站建设解决方案/手机版谷歌浏览器入口

我们到CentOS的官网&#xff0c;下载CentOS ISO 镜像。下面以下载CentOS 6.4系统为例&#xff01; 1、在浏览器中&#xff0c;输入www.centos.org &#xff0c;如下图所示&#xff1a; 2、点击镜像目录&#xff0c;如下图所示&#xff1a; 3、下载镜像站点&#xff0c;最好选…...

如何做网站的优化和推广/厦门人才网招聘官网

SIMD介绍SSE的指令Streaming SIMD Extensions函数命名举例应用 转载请注明出处&#xff1a;http://blog.csdn.net/c602273091/article/details/55045956 SIMD介绍 single instruction multiple data就是一条指令执行很多个一样的操作。比如128位的浮点运算&#xff0c;那么1…...

wordpress文章图片保存到本地/南京seo全网营销

Swift是一种类型安全的语言。类型安全的语言鼓励推荐在你代码中的值尽量要清楚其所属的类型。如果在你的代码中有一个预先好的字符串&#xff0c;你就不能错误地把他传递或者赋值给一个整数。 因为Swift是类型安全的&#xff0c;当编译你的代码时就会做类型检测并且以错误的方式…...

全景网站是怎么做的/网站建设公司网站

题目描述 给定两个矩阵A和B&#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是&#xff0c;只有规模匹配的矩阵才可以相乘。即若A有R​a​​ 行、C​a​​ 列&#xff0c;B有R​b​​ 行、C​b​​ 列&#xff0c;则只有C​a​​ 与R​b​​ 相等时&#xff0c;两个矩阵才能…...

企业网站买卖建设流程/电子商务网站建设规划方案

正则表达式是Python程序设计中非常实用的功能&#xff0c;本文就常用的正则表达式做一汇总&#xff0c;供大家参考之用。具体如下&#xff1a;一、字符串替换1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串result, number re.subn(regex, news…...

找人做建筑施工的网站/电脑优化

工作中的所有操作都在虚拟机中完成。虚拟机不登录QQ、微信、网络磁盘、CSDN等个人账户。渗透条件、开发环境和调试条件须要分离&#xff0c;从目标服务器下载的程序须要在单独的条件中测试和运行。渗透虚拟机应用代理IP上网。 物理机须要安装安全防护软件&#xff0c;安装最新的…...