当前位置: 首页 > 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);

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

http://www.lryc.cn/news/32221.html

相关文章:

  • MyBatis源码分析(六)MetaObject工具类的使用与源码分析
  • 文献资源最多的文献下载神器,99.99%的文献都可下载
  • 工控机ARM工业边缘计算机搭建Node-Red环境
  • 位图/布隆过滤器/海量数据处理方式
  • Tomcat 配置文件数据库密码加密
  • k8s-Kubernetes集群部署
  • Python数据分析案例19——上市银行财务指标对比
  • Python 中错误 ConnectionError: Max retries exceeded with url
  • SpringBoot下的Spring框架学习(Tedu)——DAY02
  • 容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法
  • 认识Spring(下)
  • Educational Codeforces Round 144 (Rated for Div. 2) C - Maximum Set
  • 学python的第四天---基础(2)
  • spring之refresh流程-Java八股面试(六)
  • 【C语言】刷题|链表|双指针|指针|多指针|数据结构
  • 糖化学类854262-01-4,Propargyl α-D-Mannopyranoside,炔丙基 α-D-吡喃甘露糖苷
  • 项目管理工具DHTMLX 在 G2 排名中再创新高
  • 28 位委员出席,龙蜥社区第 15 次运营委员会会议顺利召开
  • 自然语言处理-基于预训练模型的方法-chapter3基础工具集与常用数据集
  • 【SpringMVC】@RequestMapping
  • 【深度学习】BERT变体—SpanBERT
  • 根据身高体重计算某个人的BMI值--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 高并发编程JUC之进程与线程高并发编程JUC之进程与线程
  • css基础
  • Unity - 搬砖日志 - BRP 管线下的自定义阴影尺寸(脱离ProjectSettings/Quality/ShadowResolution设置)
  • 如何在SSMS中生成和保存估计或实际执行计划
  • mac 环境下安装MongoDB
  • RTOS中相对延时和绝对延时的区别
  • Solon2 项目整合 Nacos 配置中心
  • Linux 路由表说明