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

C++知识点,关键字inline ,String,强制类型转化

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 

目录

🐰inline 函数

🐰string类

🌸1.字符串的定义:

🌸2.访问字符串

🌸3.字符串的连接

🌸4.字符串的比较

🌸5.字符串长度的计算

🌸6.字符串的交换

🌸7.字符串数组

🐰static_cast强制类型转化


🐰inline 函数

inline 函数由inline关键字定义,引入inline函数的主要原因是用它替代C中复杂不易维护的宏函数

编译器在编译阶段完成对 inline 函数的处理,即对 inline 函数的调用替换为函数的本体。但 inline 关键字对编译器只是一种建议,编译器可以这样去做,也可以不去做。从逻辑上来说,编译器对 inline 函数的处理步骤一般如下:

(1)将 inline 函数体复制到inline函数调用处;

(2)为所用 inline 函数中的局部变量分配内存空间;

(3)将 inline 函数的的输入参数和返回值映射到调用方法的局部变量空间中;

(4)如果 inline 函数有多个返回点,将其转变为 inline 函数代码块末尾的分支(使用goto)。

事例(求0~9的平方和):
inline int inlineFunc(int num) {  if(num>9||num<0) return -1;  return num*num;  
}  int main(int argc,char* argv[]) {int a=8;int res=inlineFunc(a);cout<<"res:"<<res<<endl;
}
inline 之后的main()函数代码类似于如下形式:
int main(int argc,char* argv[]) {int a = 8; {  int _temp_b=8;  int _temp;  if (_temp_q >9||_temp_q<0) _temp = -1;  else _temp =_temp*_temp;  b = _temp;  }
}
使用inline能够使程序运行速度更加快,但是代码空间似乎增大了,就是实现空间换取时间
使用方法:
函数定义时,在返回类型前加上关键字 inline 即把函数指定为内联,函数申明时可加也可不加。但是建议函数申明的时候,也加上 inline,这样能够达到"代码即注释"的作用。
关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用。
如下风格的函数 Fun 不能成为内联函数:
inline int Fun(int x, int y);      inline 仅与函数声明放在一起
int Fun(int x, int y){ } 

而如下风格的函数 Fun 则成为内联函数:

int Fun(int x, int y);
inline int Fun(int x, int y) { } 

inline 与函数定义体放在一起,inline 是一种"用于实现的关键字",而不是一种"用于声明的关键字"。

🐰string类

string类是一种顺序表的结构,元素是char类型的字符

🌸1.字符串的定义:

string类的常用构造函数:

string  str——构造空的string类对象,即空字符串

string str(str1)——str1 和 str 一样

string  str("ABC")——等价于 str="ABC"

string  str("ABC",strlen)——等价于 "ABC" 存入 str 中,最多存储 strlen 个字节

string  str("ABC",stridx,strlen)——等价于 "ABC" 的stridx 位置,作为存到str字符串开头,中,最多存储 strlen 个字节

string  str(srelen,'A')——存储 strlen 个 'A' 到 str 中

🌸2.访问字符串

#include<iostream>
using namespace std;
string str=" abc”;和字符数组一样,字符串可以直接用下标进行访问
char ch=str[0];
cout<<ch<<endl;

🌸3.字符串的连接

字符串string a=“abcd”,string b=“efgh”,string c;
连接a和b赋值给字符串c只需要c=a+b.

🌸4.字符串的比较

(1) 当s1 < s2时,返回负数;

(2) 当s1 == s2时,返回值 = 0;

(3) 当s1 > s2时,返回正数。

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。如:

“A”<”B”

“a”>”A”

“computer”>”compare”

事例(比较字符串的大小):
#include<iostream>
using namespace std;
int main()
{string arr="abcd";string brr(arr,0);cout<<brr<<"\n";if(arr>brr){cout<<"大于"<<"\n";}else if(arr<brr){cout<<"小于"<<"\n";}else{cout<<"等于"<<"\n";}return 0;
}
结果:
abcd
等于

🌸5.字符串长度的计算

str.length()——求字符串长度
str.size()——和 length() 一样string arr="abcd";
string brr(arr,0);
cout<<arr.length()<<"\n";
cout<<arr.size()<<"\n";

🌸6.字符串的交换

这三种都可以 交换 arr 和 brr 的字符串
arr.swap(brr)        
arr.swap(brr);
brr.swap(arr);

🌸7.字符串数组

不仅可以用string定义字符串变量,也可以用string定义字符串数组。
如:string name[5]; 
定义一个字符串数组,它包含5个字符串元素
string name[5]={″Zhang″,″Li″,″Fun″,″Wang″,″Tan″};
字符数组的注意事项
1.在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。
2.并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。
3.在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。
4.每一个字符串元素中只包含字符串本身的字符而不包括′\0′。

🐰static_cast强制类型转化

static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用
static_cast,但它不能用于两个不相关的类型进行转换
 int c=static_cast<int>(a);int d=static_cast<int>(b);
编译报错 两个不相关的类型就不能进行类型转换int* e=static_cast<int*>(&b);

  🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸  

相关文章:

C++知识点,关键字inline ,String,强制类型转化

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1f680;&#x1f680;&#x1f680;大家觉不错…...

MyBatis源码分析(六)MetaObject工具类的使用与源码分析

文章目录一、MetaObject基本使用二、关键类源码分析1、MetaObject的构造方法2、PropertyTokenizer分词器3、BeanWrapper4、MetaClass5、DefaultReflectorFactory6、Reflector7、总结三、MetaObject的getValue源码分析写在后面一、MetaObject基本使用 public class User {priva…...

文献资源最多的文献下载神器,99.99%的文献都可下载

用对工具事半功倍&#xff0c;查找下载文献用对工具能节约大量的时间和精力去做更多的事情。 文献党下载器&#xff08;wxdown.org&#xff09;&#xff0c;几乎整合了所有文献数据库资源&#xff0c;涵盖各种文献类型&#xff0c;包含全部学科。文献党下载器整合的资源如&…...

工控机ARM工业边缘计算机搭建Node-Red环境

搭建Node-Red环境Node-RED是一个基于Node.js的开源可视化流程编程环境&#xff0c;可以轻松构建自定义应用程序&#xff0c;通过连接简单的节点来完成复杂的任务。Node-RED提供了一种简单的方法&#xff0c;可以快速连接到外部服务&#xff0c;从而实现物联网应用的开发。Node-…...

位图/布隆过滤器/海量数据处理方式

位图 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 直接来看问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0…...

Tomcat 配置文件数据库密码加密

几年前研究过Tomcat context.xml 中数据库密码改为密文的内容&#xff0c;因为当时在客户云桌面代码没有留备份也没有文章记录&#xff0c;最近项目又提出了这个需求就又重新拾起来学习一下。在网上找了一些资料&#xff0c;自己也大概试了一下&#xff0c;目前功能是实现了。参…...

k8s-Kubernetes集群部署

文章目录前言一、Kubernetes简介与架构1.Kubernetes简介2.kubernetes设计架构二、Kubernetes集群部署1.集群环境初始化2.所有节点安装kubeadm3.拉取集群所需镜像3.集群初始化4.安装flannel网络插件5.扩容节点6.设置kubectl命令补齐前言 一、Kubernetes简介与架构 1.Kubernetes…...

Python数据分析案例19——上市银行财务指标对比

我代码栏目都是针对基础的python数据分析人群&#xff0c;比如想写个本科毕业论文&#xff0c;课程论文&#xff0c;做个简单的案例分析等。过去写的案例可能使用了过多的机器学习和深度学习方法&#xff0c;文科的同学看不懂&#xff0c;可能他们仅仅只想用python做个回归或者…...

Python 中错误 ConnectionError: Max retries exceeded with url

出现错误“ConnectionError: Max retries exceeded with url”有多种原因&#xff1a; 向 request.get() 方法传递了不正确或不完整的 URL。我们正受到 API 的速率限制。requests 无法验证您向其发出请求的网站的 SSL 证书。 确保我们指定了正确且完整的 URL 和路径。 # ⛔️…...

SpringBoot下的Spring框架学习(Tedu)——DAY02

SpringBoot下的Spring框架学习&#xff08;Tedu&#xff09;——DAY02 目录SpringBoot下的Spring框架学习&#xff08;Tedu&#xff09;——DAY02Spring框架学习1.1 Spring介绍1.2 知识铺垫1.2.1 编辑Dog类1.2.2 编辑Cat类1.2.3 编辑测试类User.java1.2.4 上述代码的总结1.3 面…...

容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法

char* a[] 和 char a[] 的区别 char* a[] 和 char a[] 是 C 语言中数组的不同声明方式&#xff0c;二者具有以下区别&#xff1a; char a[] 声明的是一个字符数组&#xff0c;其中存储的是一串字符。此时&#xff0c;a 可以被视为一个指向字符的指针。 char* a[]则声明了一个…...

认识Spring(下)

作者&#xff1a;~小明学编程 文章专栏&#xff1a;Spring框架 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 Spring更加高效的读取和存储对象 存储bean对象 五大注解 关于五大类注解 对象的注入 属性注入 构造方法注入 Setter注入 三种注入方式的…...

Educational Codeforces Round 144 (Rated for Div. 2) C - Maximum Set

传送门 题意&#xff1a; 对于一个集合&#xff0c;如果它的任意两个元素都能 有 其中一个能整除另一个&#xff0c;那么它是好的。问在区间[L,R] 中由这个区间某些数内构成的好的集合的最长长度是多少&#xff0c;以及且满足这个长度的好集合有多少个。&#xff08;懒得想就借…...

学python的第四天---基础(2)

一、三角形类型读入数组并排序的方法nlist(map(float,input().split())) c,b,asorted(n)list_1 list(map(float, input().split())) list_1.sort() list_1.reverse()lengthssorted(map(float,input().split(" ")),reverseTrue)二、动物写法一&#xff1a;d{" &…...

spring之refresh流程-Java八股面试(六)

系列文章目录 第一章 ArrayList-Java八股面试(一) 第二章 HashMap-Java八股面试(二) 第三章 单例模式-Java八股面试(三) 第四章 线程池和Volatile关键字-Java八股面试(四) 第五章ConcurrentHashMap-Java八股面试(五) 动态每日更新算法题&#xff0c;想要学习的可以关注一下…...

【C语言】刷题|链表|双指针|指针|多指针|数据结构

主页&#xff1a;114514的代码大冒 qq:2188956112&#xff08;欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ &#xff09; Gitee&#xff1a;庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言 一、移除链表元素 二、反转链表 三&#xff0c;链表的中间结点 四&…...

糖化学类854262-01-4,Propargyl α-D-Mannopyranoside,炔丙基 α-D-吡喃甘露糖苷

外观以及性质&#xff1a;Propargyl α-D-Mannopyranoside一般为白色粉末状&#xff0c;糖化学类产品比较多&#xff0c;一般包括&#xff1a;葡萄糖衍生物、葡萄糖醛酸衍生物&#xff0c;氨基甘露糖衍生物、半乳糖衍生物、氨基半乳糖衍生物、核糖衍生物、阿拉伯糖衍生物、唾液…...

项目管理工具DHTMLX 在 G2 排名中再创新高

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…...

28 位委员出席,龙蜥社区第 15 次运营委员会会议顺利召开

2 月 24 日&#xff0c;龙蜥社区在海光召开了第 15 次运营委员会会议&#xff0c;本次会议由统信软件运营委员会委员崔开主持。来自 Arm、阿里云、飞腾、红旗软件、海光、Intel、龙芯、联通软研院、浪潮信息、普华基础软件、统信软件、万里红、移动、中科方德等理事单位的 28 位…...

自然语言处理-基于预训练模型的方法-chapter3基础工具集与常用数据集

文章目录3.1NLTK工具集3.1.1常用语料库和词典资源3.1.2常见自然语言处理工具集3.2LTP工具集3.3pytorch基础3.3.1张量基本概念3.3.2张量基本运算3.3.3自动微分3.3.4调整张量形状3.3.5广播机制3.3.6索引与切片3.3.7降维与升维3.4大规模预训练模型3.1NLTK工具集 3.1.1常用语料库和…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...