文章列表
堆和栈的区别
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区 ...
【摘自C++面试宝典】
【双向链表】
①.建立一个双向链表?
1 typedef struct DbNode
2 {
3 int data; //节点数据
4 DbNode *left; //前驱节点指针
5 DbNode *right; //后继节点指针
6 } DbNode;
(1)建立双向链表:为方便,这里定义了三个函数:
q CreateNode()根据数据来创建一个节点,返回新创建的节点。
q CreateList( ...
①.冒泡排序实现:
1 void bubble_sort_2(int a[], int len)
2 {
3 int i = 0;
4 int j = 0;
5 int temp = 0; //用于交换
6 int exchange = 0; //用于记录每次扫描时是否发生交换
7
8 for(i=0; i<len-1; i++) //进行n-1趟扫描
9 ...
【转】
进程间的通信方式:
1.管道(pipe)及有名管道(named pipe):
管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
2.信号(signal):
信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。
3.消息队列(message queue):
消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息 ...
【源于网络】
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?
virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已。 virtual可加可不加。 子类的空间里有父类的所有变量(static除外)。 同一个函数只存在一个实体(inline除外)。 子类覆盖它的函数不加virtual ,也能实现多态。 在子类的空间里,有父类的私有变量。私有变量不能直接访问。
2.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)
#include <iostream>
using name ...
【源自网络】
31.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
答案:
BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)
32.请说出const与#define 相比,有何优点?
答案:1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对 ...
进程是是有惰性的,它并不执行任何语句,它只是线程的容器,真正执行的是线程。
线程的好处:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有 ...
【转】
一、首先回顾下什么是虚函数及其作用,以便更好理解什么函数不能声明或定义为虚函数:
1. 定义:
虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形 ...