首页 > 代码库 > # C/C++的笔试题目

# C/C++的笔试题目

<style>p,li { white-space: pre-wrap }</style>

# C/C++的笔试题目

 

+ include<> 和include"" 的区别

+ sizeof操作符与字符串长度

>

char *p = "hello world";

char q[] = "hello world";

sizeof(p), sizeof(q), strlen(p), strlen(q)的值?

 

###结果

>

 

fire@fire:~/train$ ./a.out

sizeof p : 12

strlen p : 11

sizeof q : 4

strlen q : 11

 

+ malloc函数和new操作符的区别

>

malloc/free 是标准库函数,new/delete是C++操作符

+ 初始化 计算大小 返回类型 内部对象初始化

+ new是malloc+初始化

+ 析构,自动管理内存

+ 注意事项

 

+ 对socket的阻塞、非阻塞、同步、异步问题的理解

>

阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

 

+ socket服务端的建立过程 伪码

>

服务器端:

1.创建ServerSocket对象,绑定监听端口

2.通过accept()方法监听客户端请求

3.连接建立后,通过输出流读取客户端发送的请求信息

4.通过输出流向客户端发送响应信息

5.关闭相关资源

 

+ extern "C"

>

注意与extern关键字的使用,与static相对。

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。

加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型

也加到编译后的代码中,而不仅仅是函数名;

而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,

一般之包括函数名。

比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL输出(Export)的函数,

你需要用extern "C"来强制编译器不要修改你的函数名。

 

+ 编写一个跨平台的文件拷贝函数

>

使用C类库中的fopen,fread,fwrite,fclose函数,即可实现跨平台。

 

+#ifdef,#define,#ifndef

>

防止头文件的重复包含和编译。

 

+线程,进程的区别和联系

>

进程:分配管理资源的基本单位,进程空间的大小,五种状态切换。

线程:CPU调度的基本单位。

是否具有独立空间,独立空间说明什么?切换开销

 

 

 

 

 

 

 

# C/C++的笔试题目