一、c常见问题
一、那些情况下可以刷新输出缓冲区?
1.程序结束可以刷新;2.缓冲区满后刷新;3.flush()后刷新;
二、引用和指针的区别
1.有空指针但是没有空引用;2.指针可以指向其他地址,但是引用只能引用一次;3.引用时必须初始化;4.指针指向一个地址,但是引用只是一个别名;5.sizeof引用得到的是变量本身的大小,sizeof指针为4。
三、malloc和new的区别
1.malloc是一个函数,但是new是一个关键字;2.malloc失败返回NULL,new失败返回一个异常;3.malloc开辟指定大小空间,new根据实际情况自己开辟。
四、程序的内存分配
1.堆:程序员自己分配的与释放的空间
2.栈:存储局部变量,函数形参
3.全局区:程序结束后由程序员释放,存储全局变量或静态变量
4.文字常量区:存放常量字符串
5.程序代码区:存放函数体的二进制代码
五、数组与链表的区别
1.数组长度固定,链表长度不定;2.数组地址连续,链表地址不连续;3.数组可以随机访问,但是链表不可以;4.链表可以删除元素,但是数组较为困难;
六、回调函数的作用与用法
回调函数:用一个函数指针进行调用的函数,如果把函数指针作为参数传递给另一个函数,当这个指针被用为调用他所指的函数时,这个函数就是回调函数。
作用:将调用者和被调用者分开。调用者不需要知道谁是被调用者,只需要知道调用函数的原型和限制条件。
函数指针:是指在定义函数时将函数名以指针方式表示的函数,例如:int (*name)(void);
七、并行与并发
并行:两个任务共享时间片段,简单的说就是,在一个时间段内,a/b两个线程用一个cpu进行数据处理,a线程占用cpu资源一段时间后由b线程占用,二者不同时占用,但是线程切换速度太快,肉眼不可见,以为时同时发生的。
并发:并发是指两个线程由两个cpu同时执行(需要多个cpu),执行完毕后将结果合并。
八、内存泄漏/溢出/踩踏
内存泄漏:是指在程序中申请的一些堆内存,由于某些原因未释放或无法释放而造成的内存浪费。
内存溢出:指在程序中申请内存时,没有申请足够的内存供使用者使用。如申请200字节内存放置51个整形数据。
内训踩踏:访问了不合法的地址。例如:数组越界、字符串操作越界。
未完待续.........