程序员笔试面试后上机_程序员笔试面试要点

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不能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值