深信服面试题往年

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虽然还是不够全面,但是还是可以用来对付一些基本笔面的

基本数据类(WINDOWS3位机

Cha个字

Shor

In

Lon

Floa

Doubl

Londoubl1

指3位个字

浮点数双精度的比

Floaf

判是否

Iff>0.00001&&f<=0.00001)=0els{!=0}

----------------------------------------------------------------------------------------------------------------修饰保留

Const

Conschar*p//指向的内容不能被修

Chacons*p/指针不能修

Constypfun()/返回值类型为一constyp类不能修

Funconscha*p)funcons&a/保护指引用传递的值不被修

类成员函fun(const/表FU不能修改成员变不调用cons成员函

olatile

修饰变量确保变修改后保存在内存每次取数从内存中

Static

静态变保存于数据段.只初始化一

全局变外部变的说明之前再冠stati就构成了静态的全局变量。全局变量本身

是静态存储方式静态全局变量当然也是静态存储方式这两者在存储方式上并无不

。这两者的区别虽在于非静态全局变量的作用域是整个源程序当一个源程序由多个源件组成时,非静态的全局变量在各个源文件中都是有效的而静态全局变量则限制了其用域即只在定义该变量的源文件内有效在同一源程序其源文件中不能使用它

由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用因此以避免在其它源文件中引起错误

从以上分析可以看出把局部变量改变为静态变量后是改变了它的存储方式即改变

它的生存期。把全局变量改变为静态变量后是改变了它的作用域限制了它的使用范stati函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应

说明为内部函(static,内部函数应该在当前源文件中说明和定义。对于可在当前源

件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头件

stati全局变量与普通的全局变量有什么区别stati全局变量只初使化一次,防止在

他文件单元中被引作用域限于本文

stati局部变量和普通局部变量有什么区别stati局部变量只被初始化一次,下

次调用函数时依据上一次结果值进行改变;

如:fun()

{

Static int m=0;

M++;

Cout<

}

调用:

Fun();

Fun();

输出:1

2

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个

被调用中维持一份拷贝。作用域限于本文件

---------------------------------------------------------------------------------------------------------------------三.内存使用:

程序的局部变量存在于(堆栈)中,全局变量存在于(静态区即数据段)中,动态申请数据存在于(堆)中。

分配方式有三种,请记住:

-1-静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局

变量、常量,静态变量.

-2-栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。

-3-堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。

--------动态申请内存:---------------

Malloc/free与new/delete的区别;

前者:是C的库函数.在C++中创建对像时,不会调用构造函数,FREE时也不会调用析构函数

.

后者:是C++中运算符,创建析构对象都会调用构造函数,与析构函数.

注意:

Free(p)或delete p后,P成为野指针,并非为空,(P所指地址不变,只是所指内存已释放)

两次释放P会出错.

最好,释放后加个P=NULL.空指针多次释放不会出错.

---------------------------------------------------------------------------------------------------------------------四.运算符:

++,--操作:

A++:A加一后,表达式返回A加一前的附本,(非左值)

A加一后,表达式返回加一后的A.(左值)++A:位运算.

使用异或交换数据:交换A与B的值

A^=B;即:A=A^B;

B^=A;B=B^A;

A^=B;A=A^B;

---------------------------------------------------------------------------------------------------------------------五.语句:

For(A;B;C)C语句是在每次循环后才执行.

如:y=10;

for(i=0;i<10;y=++i)

{

Cout<

}

循环语句设计:

尽量小循环放外面,大循环放里面.-----原因减少循环之间的切换.

---------------------------------------------------------------------------------------------------------------------六.函数设计:

参数传递选择--------

作为输入参数的,应该用CONST作保护如:strcpy(char*str1,const char*str2)

要修改函数外面的变量时可用:

1,指针传递:即把变量地址传入函数;如:FUN(int**m);

调用时:int m=0;

FUN(&m);

2.引用传递:FUN(int&m),调用时:int m=0;fun(m);

3.如果只要修改一个外面的变量,也可以用返回值解决,但是多个的话就要用上面两

种方法中的一种.

内部变量:

Static变量;(注意);

FUN()

{

Static int m=0;

……..

}

其中M只初始化一次.每次调用FUN()后,都会在前一次调用的基础上进行修改M值函数指针:

如:void(*pFun)(int);则pFun为一个函数指针,函数参数必须为一个INT参数.

调用:

pFun=FUN;

pFun(b);或(*pFun)(b);//一定要加个括号;

(主要用于回调函数设计)

另一种定义:

Typedef void(*pFun)(int a);

则pFun成为一个函数参数为一个INT的函数指针类型.

定义:pFun p=FUN;

函数返回:

不要返回栈内存指针;

如:char*fun()

{

栈中的一块内存a[]=”kdkdk”;///Char

Return a;///返回栈中内存地址。

相关文档
最新文档