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结果为右值,无法自减

设置观察点的命令包括如下:

  1. watch 命令:设置观察点
  2. rwatch 命令:设置读观察点
  3. 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博客

posted @   sahara-随笔  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示