[C++]笔记 - 知识点积累

一.运算符的优先级

一共15个级别

  • 最高优先级 : () []
  • 最低优先级 :逗号表达式
  • 倒数第二低优先级 : 赋值和符合赋值(=,==,-=...)
  •  ! >算术运算符 > 关系运算符 > && >> || >赋值运算符

二.数据类型转换

  •  隐式类型转换
    • 算数转换
      • char int long longlong float double
      • 尽量不丢失精度,会将计算结果往精度大的类型转换
      • 例如 : 15 + 3.14    =>   15.0  +3.14
    • 赋值转换
      • int x = 3.14*10.0;
      • 转换为int类型时候,因为赋值符号的左边变量为int,则将类型转换为int类型
      • 结果为 31
    • 输出转换(C语言)
      • printf("%c",255+50); 
      • 305的二进制数是 0000 0001 0011 0001,由于超过了一个字节所能存储的最大数,,所以会将0000 0001挤到第二个字节里面去,该字节就存放0011 0001,十进制为49,即ASCLL码为49,转换为字符为 ' 1 '
      • 若按%d 进行输出,则输出为305,因为int占四个字节,足够容纳305的二进制
  • 强制类型转换
    • c语言 (数据类型)数据   (int)3.14
    • c++语言   数据类型(数据) int(3.14)
    • x  = (char)257 + 100;
    • 257为int类型,其二进制为 1 0000 0001,转换成char类型会将保留8位,结果位0000 0001,这样结果在和int类型的100相加,等于 1+ 100  = 101
  • 高级强制类型转换
  • static_cast
  • dynamic_cast
  • reinterpert_cast

三.switch和if的选择

  • switch : 用于 int char long longlong类型的变量,和多个特定常量的判断处理
    • float和都变了类型不可以
  • if适用于各种逻辑判断
  • switch一定能改为if,if不一定能改为switch

四.const int*p与int* const p 的区别

        

int i  =0;
int t = 2;
const int *p = &i;//可以改变p的指向,但是不能通过*p改变指向变量的值
int* const p1 = &i;//可以通过*p改变指向变量的值,但是不能在指向其他变量了
//*p = 3;//error
//p = &t;//pass
//*p1 =3;//pass
//p1 = &t;error
  • 常量指针可以指向常量或变量,不能将常量指针赋值给普通指针

五.底层Const和顶层Const的区别

  • 底层const用于修饰指针或引用目标对象,表示目标对象是常量,不可修改。
  • 顶层const用于修饰指针或引用本身,表示指针或引用本身是常量,无法指向其他对象。
  • 顶层const,指针本身是常量

六.不安全函数

  • scanf_s函数
int x;
scanf_s("%d",&x);//不需要使用第三个参数,用法和scanf相同float f;
scanf_s("%f",&f);//不需要使用第三个参数,用法和scanf相同char c;
scanf_s("%c",&c,sizeof(c));//需要使用第三个参数,否则有警告char name[16];
scnaf_s("%s",name,sizeof(name));//需要使用第三个参数int age;
char name[16];
scanf_s("%d%s",&age,name,sizeof(name));
  • gets函数不能使用
    • 使用gets_s,gets函数是老标准C语言函数,vs使用更安全的C11标准,使用对应的gets_s
char line[32];
gets_s(line,sizeof(line));

 六.cin>> 返回值

  • if((cin>>word) == 0){}//在vs里面不能通过编译
    • 解决方法
if(!(cin>>word)){}//方法1if((bool)(cin>>word) == 0){}//方法2

七.getline返回值是cin

  • 返回值是cin
getline(cin, word) >> count;

if(getline(cin,line)==0){}//错误,不能通过编译
  • 解决方案和上面cin的解决方法一样,可以强制转换类型或者加上逻辑非

八.计算机英语加油站

  • bool 布尔 逻辑类型
  • if         如果
  • else     否则
  • switch  开关
  • case     情况
  • default   默认
  • commit  提交
  • clone     克隆   复制

九.goto语句

  • 例子 :
string ret;
for(int i = 0;i<5;i++){cout<<"开始第"<<i+1<<"次相亲..."<<endl;cout<<"你喜欢打王者吗?"<<endl;cin>>ret;if(ret != "yes") continue;else{cout<<"我中意你,你中意我吗?"<<endl;cin>>ret;if(ret == "yes"){goto happy;}}
}
happy :cout<<"幸福生活"<<endl;cout<<"开启幸福之旅"<<endl;return 0;
}
  • goto在应用开发中不建议用,会破坏程序的结构性,一般用在底层开发,追求效率
  • 语法 :goto 标志;    标志:
  • goto在应用开发中一般将标志后面的语句封装为函数,进行函数调用 ; 或者用flag进行标记,标记成立执行标志后的代码
  • 标签必须和goto 标志;必须放在同一个函数内,不能跨函数,但是可以在同一个函数的任何位置

十.cmd

  • 切换盘 直接 d:或者c:
  • 进入某个文件,用cd 例如 cd d:\ceshi,就会进入d盘下的ceshi目录
  • 查看编码用chcp(活动码)
  • 修改编码用: chcp  编码  ,例如 chcp  936,会改为936编码
  • 在一个目录下放两个exe文件,利用破解.exe | 客户.exe,会将前面程序的输出数据,通过管道作为后面文件的输入数据
  • 利用dir查看目录下面的文件

十一.VS播放音乐

  • 头文件 
#include<mmsystem.h>
#prama comment(lib,"winmm.lib")
  • 加载音乐代码
mciSendString(_T("play 音乐地址 repeat"),0,0,0);
  • _T可以用多字符集替代
  • play 播放
  • repeat 重复

十二.宽度与对其

  • c++中的设置文本宽度头文件为#include<iomanip>,语句为setw(宽度)
  • 设置对其 : 例如左对齐 std::left

十三.原地交换字符串

  • 当left = right时,没有必要再交换,也可也用于交换其他数据类型
    string str;int left,right;cout<<"输入一个字符串: ";cin>>str;left = 0;right = str.length()-1;while (left<right){char tmp = str[left];str[left] = str[right];str[right] = tmp;left++;right--;}cout<<str<<endl;

十四.终端

  • 控制终端大小
  • mode con cols = 列数,lines =行数

  • system("任何终端命令");,再system里面可以写任何终端命令进行执行
  • 例如 : system("mode con cols=40 lines=15");

十五.string转char*类型

  • 函数c_str()函数可以将string类型转换为从const char*类型
using namespace std;
void print(const char * str){cout<<str;
}
int main() {string str = "LiHua";const char* p = str.c_str();//const,char*类型print(str);//这样会报错,形参与实参的类型不匹配print(str.c_str());//不会报错,将string 转成const char*
}

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

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

相关文章

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

搜索二叉树

目录 搜索二叉树的性质 搜索二叉树的实现、 插入 删除 代码 在以前我们学过二叉树,但是在对二叉树的学习中发现,似乎二叉树并没有什么作用,要论增删它比不上链表,论随机访问也没法和顺序表比,对于当时的我们是一头雾水,那么现在它的功能终于是体现出来了,这里就是我们要讲的…

[Go版]算法通关村第十一关白银——位运算的高频算法题

目录 专题1&#xff1a;位移的妙用题目&#xff1a;位1的个数&#xff08;也被称为汉明重量&#xff09;解法1&#xff1a;遍历所有位&#xff0c;判断每个位的数字是否是1Go代码 解法2&#xff1a;依次消除每个1的位 numnum&(num-1)Go代码 题目&#xff1a;比特位计数思路…

Mac 卸载appium

安装了最新版的appium 2.0.1,使用中各种问题&#xff0c;卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium&#xff1a; npm uninstall -g appium 出现报错&#xff1a;Error: EACCES: permiss…

云安全攻防(十二)之 手动搭建 K8S 环境搭建

手动搭建 K8S 环境搭建 首先前期我们准备好三台 Centos7 机器&#xff0c;配置如下&#xff1a; 主机名IP系统版本k8s-master192.168.41.141Centos7k8s-node1192.168.41.142Centos7k8s-node2192.168.41.143Centos7 前期准备 首先在三台机器上都执行如下的命令 # 关闭防火墙…

postman测试后端增删改查

目录 一、本文介绍 二、准备工作 &#xff08;一&#xff09;新建测试 &#xff08;二&#xff09;默认url路径查看方法 三、增删改查 &#xff08;一&#xff09;查询全部 &#xff08;二&#xff09;增加数据 &#xff08;三&#xff09;删除数据 &#xff08;四&…

nginx反向代理流程

一、nginx反向代理流程 反向代理&#xff1a;使用代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络中的上游服务器&#xff0c;并将上游服务器得到的结果返回给请求连接的客户端&#xff0c;代理服务器对外表现就是一个web服务器。Nginx就经常拿来做…

【内网穿透】如何实现在外web浏览器远程访问jupyter notebook服务器

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

【爱书不爱输的程序猿】公网访问本地搭建的WEB服务器之详细教程

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本地电脑搭建Web服务器并用cpolar发布至公网访问 前言1. 首先将PHPStudy、WordPress、cpolar下载到电脑2. 安装PHPStudy3. 安装cpolar&#xff0c;进入Web-UI界面4.安装wordpress5.…

KU Leuven TU Berlin 推出“RobBERT”,一款荷兰索塔 BERT

荷兰语是大约24万人的第一语言&#xff0c;也是近5万人的第二语言&#xff0c;是继英语和德语之后第三大日耳曼语言。来自比利时鲁汶大学和柏林工业大学的一组研究人员最近推出了基于荷兰RoBERTa的语言模型RobBERT。 谷歌的BERT&#xff08;来自Transformers的B idirectional …

由浅入深学习Tapable

文章目录 由浅入深学习TapableTapable是什么Tapable的Hook分类同步和异步的 使用Sync*同步类型钩子基本使用bailLoopWaterfall Async*异步类型钩子ParallelSeries 由浅入深学习Tapable webpack有两个非常重要的类&#xff1a;Compiler和Compilation。他们通过注入插件的方式&a…

【数据分析入门】Numpy进阶

目录 一、数据重塑1.1 透视1.2 透视表1.3 堆栈/反堆栈1.3 融合 二、迭代三、高级索引3.1 基础选择3.2 通过isin选择3.3 通过Where选择3.4 通过Query选择3.5 设置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重复数据五、数据分组5.1 聚合5.2 转换 六、…

回溯算法详解

目录 回溯算法详解 回溯VS递归 回溯算法的实现过程 n个结点构造多本节要讨论的是当给定 n&#xff08;n>0&#xff09;个结点时&#xff0c;可以构建多少种形态不同的树。 回溯算法详解 回溯算法&#xff0c;又称为“试探法”。解决问题时&#xff0c;每进行一步&#…

主成分分析Python代码

对于主成分分析详细的介绍&#xff1a;主成分分析&#xff08;PCA&#xff09;原理详解https://blog.csdn.net/zhongkelee/article/details/44064401 import numpy as np import pandas as pd标准PCA算法 def standeredPCA(data,N): #data:…

十种排序算法(附动图)

排序算法 一、基本介绍 ​ 排序算法比较基础&#xff0c;但是设计到很多计算机科学的想法&#xff0c;如下&#xff1a; ​ 1、比较和非比较的策略 ​ 2、迭代和递归的实现 ​ 3、分而治之思想 ​ 4、最佳、最差、平均情况时间复杂度分析 ​ 5、随机算法 二、排序算法的分类 …

RabbitMq-1基础概念

RabbitMq-----分布式中的一种通信手段 1. MQ的基本概念&#xff08;message queue,消息队列&#xff09; mq:消息队列&#xff0c;存储消息的中间件 分布式系统通信的两种方式&#xff1a;直接远程调用&#xff0c;借助第三方完成间接通信 消息的发送方是生产者&#xff0c…

面试热题(二叉树的锯齿形层次遍历)

给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3…

C++ STL stack queue

目录 一.stack 介绍 二.stack 使用 三.stack 模拟实现 普通版本&#xff1a; 适配器版本&#xff1a; 四.queue的介绍 五. queue使用 六.queue模拟实现 七.deque介绍 1.容器适配器 2.deque的简单介绍 3.deque的缺陷 4.为什么选择deque作为stack和queue的底层默认容…

pycharm调整最大堆发挥最大

python程序运行时&#xff0c;怎么提高效率&#xff0c;设置pycharm最大堆过程如下&#xff1b; 一、进入设置pycharm最大堆&#xff1b; 二、进入设置pycharm最大堆&#xff1b; 如果8g设置为6g左右&#xff0c;占75%左右最佳

【JVM】JVM中的分代回收

文章目录 分代收集算法什么是分代分代收集算法-工作机制MinorGC、 Mixed GC 、 FullGC的区别是什么 分代收集算法 什么是分代 在java8时&#xff0c;堆被分为了两份&#xff1a; 新生代和老年代【1&#xff1a;2】 其中&#xff1a; 对于新生代&#xff0c;内部又被分为了三…