程序员笔试面试要点
2015-08-25 16:53
363 查看
C/C++关键字
一.Static静态变量
C中
1)函数体内具有记忆功能,调用过程中值不变。
2)在模块内,作用域范围有限,即如果一个变量被声明为静态,可以被模块内所有函数访问,但不能被模块外的其他函数访问,是本地全局变量。
3)内部函数应该在当前原文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使这些函数的源文件包含这个头文件。
C++中类似
特点:
1) 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。
2) 可以实现信息隐藏。精通数据成员可以是private成员,而全局变量不能。
1.类的静态成员必须初始化,因为实在程序初始化的时候分配的
2。静态成员只初始化一次,例如
for(i=0;i<3;i++)
{
static int value=i++
printf(“%d”,value);
}
结果是:0
0
0
因为value是静态类型,只会定义一次,不管调用几次,satic int value=i++只会在第一次叼哟个的时候执行。第一次执行i=0,之后都不会再调用这个static执行语句。
二 const
1 const具有不可变性。
2 可用作形参,取保函数内不会改变实参的值。
三 枚举变量
枚举变量的值默认为前一个变量的值加1,如果第一个枚举变量没有赋值,那么其默认值为0.
四 new/delete mallloc/free的区别
C++中,申请动态内存与释放动态内存,都可以,存储方式相同,new与malloc动态申请的内存都位于堆中,无法被操作系统自动回收,需要对应的delete与free来释放空间,同时对于一般的数据类型,效果一样。
malloc/free为C/C++语言的标准库函数,在C语言中需要头文件《stdlib.h>的支持,new/delete是C++的运算符。
对于类的对象而言,malloc/free无法满足动态对象的要求,对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数,而malloc/free不在编译器控制权限之内,无法执行构造函数和析构函数。
具体区别在下面几个方面:
1.new能够自动计算需要分配的内存空间,malloc需要手工计算字节数。
例如:p1=newint[2],int*p2=malloc(2*sizeof(int))。
2.new与delete直接带具体类型的指针,malloc与free返void类型的指针。
3.new是类型安全的,而malloc不是,例如,int*P=new float[2],编译时会报错:int*P=malloc(2*四则of(int)),编译时无法指出错误来。
4.new一般又两步组成,分别是new操作和构造,new操作对应于malloc,但new操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到非内存设备上,malloc不行。
5.new调用构造函数,malloc不能;delete将调用析构函数,而free不能。
6.malloc/free 需要库函数,而malloc不能;delete将调用析构函数,而free不能。
一.Static静态变量
C中
1)函数体内具有记忆功能,调用过程中值不变。
2)在模块内,作用域范围有限,即如果一个变量被声明为静态,可以被模块内所有函数访问,但不能被模块外的其他函数访问,是本地全局变量。
3)内部函数应该在当前原文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使这些函数的源文件包含这个头文件。
C++中类似
特点:
1) 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。
2) 可以实现信息隐藏。精通数据成员可以是private成员,而全局变量不能。
1.类的静态成员必须初始化,因为实在程序初始化的时候分配的
2。静态成员只初始化一次,例如
for(i=0;i<3;i++)
{
static int value=i++
printf(“%d”,value);
}
结果是:0
0
0
因为value是静态类型,只会定义一次,不管调用几次,satic int value=i++只会在第一次叼哟个的时候执行。第一次执行i=0,之后都不会再调用这个static执行语句。
二 const
1 const具有不可变性。
2 可用作形参,取保函数内不会改变实参的值。
三 枚举变量
枚举变量的值默认为前一个变量的值加1,如果第一个枚举变量没有赋值,那么其默认值为0.
四 new/delete mallloc/free的区别
C++中,申请动态内存与释放动态内存,都可以,存储方式相同,new与malloc动态申请的内存都位于堆中,无法被操作系统自动回收,需要对应的delete与free来释放空间,同时对于一般的数据类型,效果一样。
malloc/free为C/C++语言的标准库函数,在C语言中需要头文件《stdlib.h>的支持,new/delete是C++的运算符。
对于类的对象而言,malloc/free无法满足动态对象的要求,对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数,而malloc/free不在编译器控制权限之内,无法执行构造函数和析构函数。
具体区别在下面几个方面:
1.new能够自动计算需要分配的内存空间,malloc需要手工计算字节数。
例如:p1=newint[2],int*p2=malloc(2*sizeof(int))。
2.new与delete直接带具体类型的指针,malloc与free返void类型的指针。
3.new是类型安全的,而malloc不是,例如,int*P=new float[2],编译时会报错:int*P=malloc(2*四则of(int)),编译时无法指出错误来。
4.new一般又两步组成,分别是new操作和构造,new操作对应于malloc,但new操作可以重载,可以自定义内存分配策略,不做内存分配,甚至分配到非内存设备上,malloc不行。
5.new调用构造函数,malloc不能;delete将调用析构函数,而free不能。
6.malloc/free 需要库函数,而malloc不能;delete将调用析构函数,而free不能。
相关文章推荐
- 让程序员跳槽的非钱原因
- 黑马程序员——Java基础---String类和对象包装类
- 黑马程序员——28,反射
- 程序员的年龄天花板
- 【黑马程序员】Block
- 黑马程序员—IOS基础视频—多态点语法类对象
- 黑马程序员—IOS加强视频—foundation框架
- 百度面试题 运用递归求最大重复数
- 【iOS学习笔记】面试题归总
- 作为码农,我们为什么要写作
- 机器学习算法面试—口述(3):贝叶斯分类器
- 华为近两年嵌入式面试题目
- 面试题总结(有空就更新)
- 黑马程序员——C语言之构造类型(结构体、枚举)
- 黑马程序员——C语言之字符串操作函数与内存管理
- 黑马程序员——C语言之字符串指针与二维字符串数组
- 程序员开发学习网站
- 黑马程序员——异常Exception
- 国外程序员常去的14个开发社区
- 面试题25二叉树中和为某一值的路径