yizhongqishi的线上错题本_c/c++篇
来源:互联网 发布:java println 编辑:程序博客网 时间:2024/04/30 06:24
临近春招面试,这里就用来保存在牛客上总结的错题和jing~yan
关于sizeof(Class)的问题:
首先要说的是,sizeof是C/C++的关键字,并不是java的关键字,在招商银行的笔试中犯了傻……
进入正题,经常配合malloc使用的sizeof()一般是求出目标所占内存大小,对于基础变量来说没有什么需要注意的,无非就是byte为1,char为1之类的(要注意的是指针在32bit下为4,在64bit下为8),但是假如是求结构体的时候,就需要考虑字节对齐的问题,简单就是说找出结构体所包含的所有类型大小的最小公倍数,并且内存中变量的起始位置必须是变量占用内存大小的整倍数。那么要是sizeof(Class)这种情况下呢?不妨举例说明:
<pre name="code" class="cpp"><pre name="code" class="cpp">Class Test{ public: Test(){} ~Test(){} void ttt(){}};
这样的类没有成员变量,被认为是空类,此时sizeof(Test)的求出的结果为1;
但是加入类中包含虚函数
Class Test{ public: Test(){} ~Test(){} virtual void ttt(){}};则此时sizeof(Test)为4;
假如所求的类不是一个空类,如
<pre name="code" class="cpp">Class Test{ public: Test(){} ~Test(){} virtual void ttt(){} private: char ch; int a; short sh;};
则此时先类似结构体字节对齐求出非静态成员变量的总大小,然后加上虚函数的4,此时sizeof(Test)结果为16其中;
关于C/C++条件语句错误用了赋值语句:返回的应为所赋值,例如:
for (int i=-1;i=0;i++){cout<<"fuck me"<<endl;}则执行0次循环,因为中间的判断条件为false(返回赋给i的0);
void* malloc(unsigned size);
void* realloc(void* ptr, unsigned newsize);
void* calloc(size_t numElements, size_t sizeOfElement);
都在stdlib.h函数库内,它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL.
(1)函数malloc()
在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址.
(2)函数calloc()
与malloc相似,参数sizeOfElement为申请地址的单位元素长度,numElements为元素个数,即在内存中申请numElements*sizeOfElement字节大小的连续地址空间.calloc在动态分配完内存后,自动初始化该内存空间为零
(3)函数realloc()
给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度.
memset(void *s,int ch,unsigned n);
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,
块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作
在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.
HttpServletRequest的功能介绍:
在C++中,冒号(:)只是在构造函数中用来给形参赋值
引用,const成员变量,基类构造函数 一定要通过初始化列表来实现。
空对象占8个字节
有数据成员的话,你把数据成员按基本数据类型和对象引用分开统计,也就是说需要字节对齐两次。
基本数据类型按byte/boolean=1,char/short=2,int/float=4,long/double=8,对象引用按每个4字节,保证8字节的对齐
- yizhongqishi的线上错题本_c/c++篇
- <C++>_C++的枚举
- C#,自然的进步_C#教程
- C#,自然的进步_C#教程
- <C++>_C++的类型检查更严格
- C#_C#中的事件
- C++_C风格字符串
- 计网_C语言编程获取本机的mac地址以及mac下pcap编程报错Undefined symbols for architecture x86_64-"_pcap_*****"...的解决办法
- C#中方法参数的四种类型_C#教程
- C#中方法参数的四种类型_C#教程
- c#中的委托和事件的简单实例_c#应用
- C编译器剖析_3.2 语法分析_C语言的语句
- C编译器剖析_C语言的变参函数
- C#_C#中[],List,Array,ArrayList的区别及应用
- 探讨C语言中关键字volatile的含义_C
- 2015_蓝桥_C/C++_B组_2题
- 软件工程线上课程(C语言实践篇)学习心得总结
- 软件工程线上课程(C语言实践篇)学习心得总结
- 创建项目骨架
- 史上最详细最容易理解的HMM文章
- 争取几句话描述一下爬山法,模拟退火,遗传算法
- 找到匹配的字符串并进行排序
- stat,lstat,fstat三者的区别
- yizhongqishi的线上错题本_c/c++篇
- 菜鸟程序员找工作
- 设计模式之桥接模式
- 怎么用php写一个日志功能的函数
- 单位和尺寸
- Spring事务配置的五种方式
- jquery 中多条件选择器,相对选择器,层次选择器的区别
- android 增量更新 mac环境
- PHP之include/require深入了解