[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.rhkb.cn/news/95537.html

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

相关文章

【NepCTF2023】复现

文章目录 【NepCTF2023】复现MISC与AI共舞的哈夫曼codesc语言获取环境变量 小叮弹钢琴陌生的语言你也喜欢三月七么Ez_BASIC_IImisc参考 WEBez_java_checkinPost Crad For You独步天下配置环境独步天下-镜花水月环境变量提权 独步天下-破除虚妄总结 独步天下-破除试炼_加冕成王知…

Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow

一、前言 QMdiArea类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;是Qt用来显示MDI窗口的部件。 滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 框架类 QFramehttps://blog.csdn.net/u01…

案例: 用户消费数据分析--Pandas

1. 数据读入 2. 数据处理–日期处理 3. 用户整体消费趋势分析 4. 用户个体消费分析 4.1 用户消费数量与消费金额关系的散点图 4.2 每位用户消费金额分布 4.2.1 消费金额贡献度折线图 用户贡献度折线图 4.2.2 消费金额占比前80%的客户&#xff0c;消费分布直方图 4.3 消费时…

传输层协议

传输层协议 再谈端口号端口号范围划分认识知名端口号两个问题netstatpidof UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议 TCP协议TCP协议段格式确认应答(ACK)机制超时重传机制连接管理机制理解 CLOSE_WAIT 状态理解TIME_WAIT状态解决…

SQL | 分组数据

10-分组数据 两个新的select子句&#xff1a;group by子句和having子句。 10.1-数据分组 上面我们学到了&#xff0c;使用SQL中的聚集函数可以汇总数据&#xff0c;这样&#xff0c;我们就能够对行进行计数&#xff0c;计算和&#xff0c;计算平均数。 目前为止&#xff0c…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了&#xff1f;纯血 HarmonyOS NEXT 即将到来》的相关资讯&#xff0c;没想到大家「讨&#xff08;fa&#xff09;论&#xff08;xie&#xff09;」的热情很高&#xff0c;莫名蹭了一波流量&#xff0c;虽然流量对我来说也没什么用&#xff0c;但…

Golang 基础语法问答

使用值为 nil 的 slice、map 会发生什么&#xff1f; 允许对值为 nil 的 slice 添加元素&#xff0c;但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …

bert,transformer架构图及面试题

Transformer详解 - mathor atten之后经过一个全连接层残差层归一化 class BertSelfOutput(nn.Module):def __init__(self, config):super().__init__()self.dense nn.Linear(config.hidden_size, config.hidden_size)self.LayerNorm nn.LayerNorm(config.hidden_size, epscon…

mysql between and 和 大于小于的区别

1&#xff09;表达式 between 下界值 and 上界值 ——限定"表达式"的值介于"下界值"到"上界值"之间的所有值&#xff0c;并且包含"下界值"和"上界值"&#xff1b; 2&#xff09;表达式 >下界值 and 表达式<上界值 ——…

REC 系列 Visual Grounding with Transformers 论文阅读笔记

REC 系列 Visual Grounding with Transformers 论文阅读笔记 一、Abstract二、引言三、相关工作3.1 视觉定位3.2 视觉 Transformer 四、方法4.1 基础的视觉和文本编码器4.2 定位编码器自注意力的文本分支文本引导自注意力的视觉分支 4.3 定位解码器定位 query 自注意力编码器-解…

【数学建模】-- 数学规划模型

概述&#xff1a; 什么是数学规划&#xff1f; 数学建模中的数学规划是指利用数学方法和技巧对问题进行数学建模&#xff0c;并通过数学规划模型求解最优解的过程。数学规划是一种数学优化方法&#xff0c;旨在找到使目标函数达到最大值或最小值的变量取值&#xff0c;同时满足…

Python中import模块导入的实现原理

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 Python中import模块导入的实现原理 什么是模块import搜索路径import导入模块的原理图书推荐 专栏&…

client-go实战之十二:选主(leader-election)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《client-go实战》系列的第十二篇&#xff0c;又有一个精彩的知识点在本章呈现&#xff1a;选主(leader-election)在解释什么是选主之前&…

【数据结构OJ题】移除链表元素

原题链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/ 1. 题目描述 2. 思路分析 我们可以定义一个结构体指针变量cur&#xff0c;让cur一开始指向头结点&#xff0c;同时定义一个结构体指针prev&#xff0c;令prev初始化为空指针NULL…

2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;数字字符求和 请编写一个程序实现以下功能&#xff1a;从一个字符串中&#xff0c;提取出所有的数字字符即0-9&#xff0c;并作为数求和。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 一行字符串&#xff0c;长度不超过100&#xff0c;字符串中…

图形推理 1

正确答案&#xff1a;D 你的答案&#xff1a;C 官方解析&#xff1a; 根据观察我们发现A、B、C项都为对称图形&#xff0c;只有D项不是。 官方解析&#xff1a; 图形组成元素不相似&#xff0c;先考虑属性规律&#xff0c;再考虑数量规律。属性无明显规律&#xff0c;考虑数量规…

智慧建筑工地平台,通过信息化技术、物联网、人工智能技术,实现对施工全过程的实时监控、数据分析、智能管理和优化调控

智慧工地是指通过信息化技术、物联网、人工智能技术等手段&#xff0c;对建筑工地进行数字化、智能化、网络化升级&#xff0c;实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量&#xff0c;降低施工成本&#xf…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

【MT32F006】MT32F006之CS1237采集秤传感器

本文最后修改时间&#xff1a;2023年06月07日 一、本节简介 本文介绍如何使用MT32F006连接CS1237芯片采集秤传感器。 二、实验平台 库版本&#xff1a;V1.0.0 编译软件&#xff1a;MDK5.37 硬件平台&#xff1a;MT32F006开发板&#xff08;主芯片MT32F006&#xff09; 仿真…

微服务相关面试题

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