模拟面试
1. 什么是回调函数
将函数作为另一函数的参数
实现:通过函数指针,如线程的创建函数
2. 结构体和共用体的区别
结构体的每个成员都会分配内存,大小为各个成员所占内存之和,内存对齐
共用体的内存以最大成员为主
3. 赋值和初始化有什么不同
初始化:给一个声明后未初始化的变量一个有意义的初始值
赋值:销毁一个变量原来的值,并赋予一个新值
4. 局部变量和全局变量能否重命名
可以重名,在局部变量的作用域内更改局部变量,不会影响全局变量的值
在局部变量作用域内使用全局变量需使用extern
5. 形参和实参有什么区别
函数定义时的参数叫形参,调用函数时传递的参数叫实参
实参的表现形式:常量,变量,表达式
形参的表现形式:只能是变量
6. 数组和指针的区别是什么
指针大小是固定的,数组的大小时根据申请时数据类型和元素个数而定
数据名表示的是首元素地址,功能上等同于一个地址
数组是构造数据类型,指针是指针类型
7. void 指针就是空指针吗?有什么作用
空指针是(void*)0,void指针是万能指针,可以执行任意类型的地址
void指针不能直接解用,必须先转换为具体的指针后在使用
8. 简述快速排序的思想
选中一个标杆值,在其左侧排列比标杆小的值,右侧排列比标杆大的值
然后循环对左侧数组和右侧数组进行以上操作直到排列完成
9. 什么是野指针,怎么避免野指针
创建指针时没有给指针指向;释放堆区空间后,指针没有置空;访问数组时,下标越界后的指针;当指向一个临时空间的指针,空间释放后的指针
避免:指针初始化,小心数组越界,指针指向空间释放即使其置为NULL,指针使用前检查其有效性
10. 网络七层体系结构
物理,数据链路,网络,传输,会话,表示,应用