c++基础语法笔记

本文主要介绍了C++的基础语法,包括成员访问运算符的使用,运算优先级的规则,如*(i++)和*(++i)的区别。接着讲解了不同类型之间的转换,如char转int,int转char,以及atoi、stoi、strtoi函数在字符串转整数时的不同。此外,还探讨了C++中的进程通讯方式,如管道、FIFO、消息队列、信号量和共享内存区,分析了各自的优缺点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.成员访问运算符

对于形如point->mem的表达式,根据point的类型不同,其分别等价于

(*point).mem;   //point是一个内置的指针类型
point.operator()->mem;    //point是类的一个对象

2.运算优先级

*(i++)先运算,再执行加操作;*(++i)相反


3.类型转换

char转int

char s;
int a = s-'0'

int转char

int a = 5;
char s = a +'0'

atoi、stoi、strtoi区别

首先atoi和strtol都是c里面的函数,他们都可以将字符串转为int,它们的参数都是const char*,因此在用string时,必须调c_str()方法将其转为char*的字符串。或者atof,strtod将字符串转为double,它们都从字符串开始寻找数字或者正负号或者小数点,然后遇到非法字符终止,不会报异常

    string strnum=" 232s3112";
    int num1=atoi(strnum.c_str());
    long int num2=strtol(strnum.c_str(),nullptr,10);

返回结果均为232,程序在最开始遇到空格跳过,然后遇到了字符's'终止。

strtol的第三个参数base的含义是当前字符串中的数字是什么进制,而atoi则只能识别十进制的。

stoi是string库中的函数,他的参数是string,当无法转换时会报错。

 

void*需要强制类型转换

4.进程通讯

1.管道:速度慢,容量有限,只有父子进程能通讯    

2.FIFO:任何进程间都能通讯,但速度慢    

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题   (ROS)

4.信号量:不能传递复杂消息,只能用来同步    

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值