C/C++低级语法错误
strlen和sizeof表示不同的含义。
strlen表示的是一个计数器的工作,它是从内存的某个位置(这里的位置可以是字符串开头,中间某个位置,也可以是某个不确定的内存区域)开始扫描,然后直至碰到第一个字符串结束符'\0'为止,然后返回计数器值。
sizeof在C语言中是用于判断数据类型或者表达式长度的运算符。
2、在程序中运行strlen和sizeof的运行结果有区别。
strlen后是不加最后的结束标志'\0',其表示字符串的长度。而sizeof求的是字符串所在内存中的长度,所以它是加上最最后的结束标志'\0'的。如果传入不是地址,报错。
char str[] = "ab"; 等价于 char str[] = {'a', 'b', '\0'}; 不等于char sn[] = {'a', 'b'};
sizeof(数组) 返回数组大小,sizeof(指针) 返回指针大小
sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,所以sizeof(i++)在编译的时候被翻译成sizeof((i++的数据类型)),也就是4(32位int),换言之编译时sizeof(i++)就被4取代了
class 大小
成员变量对齐,普通函数不占空间,有虚函数时,增加一个虚函数表指针变量
printf格式
%u,无符号十进制整型;
%lu,无符号十进制长整型;
int node = (int)malloc(sizeof(node)); 可编译通过,分配8字节内存
继承的内存布局
每个类都包含父类的全量数据,如果有2个父类,且2个父类继承同一个基类,则子类包含2个父类中各自基类(包含2个基类)的内存。
--i--;编译错误,--i结果为右值,无法自减
设置观察点的命令包括如下:
- watch 命令:设置观察点
- rwatch 命令:设置读观察点
- awatch 命令:设置读写观察点
algorithm库提供了remove与remove_if算法。由于这些算法运行在两个前向迭代器确定的元素范围上,它们没有底层容器或集合的具体知识。这些算法并不从容器删除元素,而是把不符合删除标准的元素搬移到容器的前部,并保持这些元素的相对次序。 该算法一次通过数据范围即可实现该目标。
// Removes all elements with the value 5.
v.erase(std::remove(v.begin(), v.end(), 5), v.end());
封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量.
智能指针
C++继承内存布局 - 多继承(无虚继承)_imJaron的博客-CSDN博客
C++继承内存布局 - 多继承(无虚继承) - 程序员大本营
【C++】智能指针详解_c++智能指针_Ornamrr的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本